2016-10-03 119 views
0

我有一個包含許多列的數據框,其中包含true/false值。例如,生成DataFrame的列名稱與條件匹配的系列

import pandas as pd 
data = pd.DataFrame([[True, True, False], 
        [False, False, True], 
        [True, False, True], 
        [False, False, False], 
        [True, True, False]], 
        columns=['A','B','C']) 

實際上除了這三列以外還有很多。

我需要生成一個額外的列,其中每個值是所有列的名稱的列表中值爲true。對於這個例子,這應該是:

0 [A, B] 
1  [C] 
2 [A, C] 
3  [] 
4 [A, B] 
Name: X, dtype: object 

有什麼魔術在熊貓實現這一目標,而無需使用嵌套循環(這是我至今唯一的想法)?

回答

1

您可以使用apply方法來遍歷行,並使用每個行子集的列名:

data.apply(lambda r: data.columns[r].tolist(), axis = 1) 

#0 [A, B] 
#1  [C] 
#2 [A, C] 
#3  [] 
#4 [A, B] 
#dtype: object 
+0

謝謝,這就是我一直在尋找。 – Ale