2016-09-02 115 views
4

我是python的新手。我有一個數據幀,看起來像這樣:for循環提取大熊貓數據幀的標頭

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 

我如何寫一個for循環來收集列名的每一行。我期望我的結果集如下所示:

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 

如果你的數據幀是數字,則先通過測試獲得布爾矩陣您df反對0:

(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

@zihan。隱藏在視圖中的是布爾索引eval。這隻適用於你的矩陣值是0和1的情況。 – Merlin