2016-09-02 15 views
4

私はPythonの初心者です。私は次のようなデータフレームを持っています:パンダのデータフレームのヘッダを抽出するためのループ

A B C D E 
0 1 0 1 0 1 
1 0 1 0 0 1 
2 0 1 1 1 0 
3 1 0 0 1 0 
4 1 0 0 1 1 

各行の列名を収集するにはどうすればよいでしょうか。結果セットは次のようになります:

A B C D E Result 
0 1 0 1 0 1 ACE 
1 0 1 0 0 1 BE 
2 0 1 1 1 0 BCD 
3 1 0 0 1 0 AD 
4 1 0 0 1 1 ADE 

誰でも私を助けることができますか?ありがとうございました!あなたは行列と列名のベクトル間の行列内積をしたいと

答えて

9

dot機能は、その目的のために行われます。

df.dot(df.columns) 
Out[5]: 
0 ACE 
1  BE 
2 BCD 
3  AD 
4 ADE 

あなたのデータフレームが数値である場合は、テストで最初のブール行列を得ます0に対するあなたのdf

(df!=0).dot(df.columns) 

PS:ちょうど新しい列に結果を割り当てる

df['Result'] = df.dot(df.columns) 

df 
Out[7]: 
    A B C D E Result 
0 1 0 1 0 1 ACE 
1 0 1 0 0 1  BE 
2 0 1 1 1 0 BCD 
3 1 0 0 1 0  AD 
4 1 0 0 1 1 ADE 
+0

これはあまりにも良いです:-) – piRSquared

+0

@piRSquaredありがとう:-) – Boud

+0

@ジハン。ビューから隠されていることは、ブール索引付け評価です。これは、行列の値が0と1であるためにのみ有効です。 – Merlin

関連する問題