18

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

4

1 に答える 1