15
次の例と同様の形状のデータセットを解析しています。私は2つの異なるデータの種類(ABCデータとXYZデータ)を持っている:map()を使用してpandas DataFrameに追加の列を効率的に作成する
abc1 abc2 abc3 xyz1 xyz2 xyz3
0 1 2 2 2 1 2
1 2 1 1 2 1 1
2 2 2 1 2 2 2
3 1 2 1 1 1 1
4 1 1 2 1 2 1
私はデータフレーム内に存在する各ABC列の分類列を追加する関数を作成します。列名のリストとカテゴリマッピング辞書を使用して、私は望みの結果を得ることができました。
abc_columns = ['abc1', 'abc2', 'abc3']
xyz_columns = ['xyz1', 'xyz2', 'xyz3']
abc_category_columns = ['abc1_category', 'abc2_category', 'abc3_category']
categories = {1: 'Good', 2: 'Bad', 3: 'Ugly'}
for i in range(len(abc_category_columns)):
df3[abc_category_columns[i]] = df3[abc_columns[i]].map(categories)
print df3
最終結果:
abc1 abc2 abc3 xyz1 xyz2 xyz3 abc1_category abc2_category abc3_category
0 1 2 2 2 1 2 Good Bad Bad
1 2 1 1 2 1 1 Bad Good Good
2 2 2 1 2 2 2 Bad Bad Good
3 1 2 1 1 1 1 Good Bad Good
4 1 1 2 1 2 1 Good Good Bad
終わりfor
ループが正常に動作している間、私はPythonのlambda
機能を使用する必要があるように感じるが、それを見つけ出すように見えることはできません。
abc型の動的数値をより効率的にマッピングする方法はありますか?
アンディ、本当にありがとうございます! –
@AndyHayden、データフレームの.applymapとpandasデータフレームの.mapの違いは何ですか? – yoshiserry
@yoshiserry applymapは、各行/ colではなく、各セルに適用します。 –