2017-04-12 7 views
1

パンダのDataFrameがあると、いくつかのバイナリ列(1は値が存在することを示し、0はそうでないことを示します)を1つのカテゴリ型の列に変換する方法はありますか?Pandas DataFrame:バイナリ列を1つのカテゴリ型列に変換する方法は?

「逆pd.get_dummies()」を実行する方法はもう1つ考えてください。ここで

は、いくつかのバイナリ列にカテゴリ列を変換する例です:

import pandas as pd 
s = pd.Series(list('ABCDAB')) 
df = pd.get_dummies(s) 
df 
    A B C D 
0 1 0 0 0 
1 0 1 0 0 
2 0 0 1 0 
3 0 0 0 1 
4 1 0 0 0 
5 0 1 0 0 

私が達成したい何

df1 
    A B C D 
0 1 0 0 0 
1 0 1 0 0 
2 0 0 1 0 
3 0 0 0 1 
4 1 0 0 0 
5 0 1 0 0 

にそれをI変換んでしたデータフレームを与えています
df1 
    A B C D category 
0 1 0 0 0 A 
1 0 1 0 0 B 
2 0 0 1 0 C 
3 0 0 0 1 D 
4 1 0 0 0 A 
5 0 1 0 0 B 

答えて

3

1つの方法は、idxmaxを使用して1秒を検索することです。

In [32]: df["category"] = df.idxmax(axis=1) 

In [33]: df 
Out[33]: 
    A B C D category 
0 1 0 0 0  A 
1 0 1 0 0  B 
2 0 0 1 0  C 
3 0 0 0 1  D 
4 1 0 0 0  A 
5 0 1 0 0  B 
+0

これは、データフレーム内の唯一の列がこれらのバイナリ列である場合にのみ機能します。ソリューションでこれを指定する方法はありますか? – ShanZhengYang

+0

パンダの列を選択する方法はたくさんあります。あなたは 'df [some_list_of_columns_you_care_about] .idxmax(axis = 1)'を実行するか、 'df.filter'を使うか、' df.select'を関数で使うか、 'df.loc'をマスクで使うか、' df。位置指定付きの「iloc」など – DSM

関連する問題