次の例に似た形状のデータセットを分析しています。2 種類のデータ ( abcデータとxyzデータ) があります。
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タイプの列にマップするより効率的な方法はありますか?