比方說,我在熊貓以下數據幀:檢索列基於在數據幀的條件
import pandas as pd
pd.DataFrame({'A': [True, False], 'B':[False, True], 'C':[True, True], 'D':[False, False], 'E':[False, False]})
我怎樣才能得到只有那些真正的列?我有一個DataFrame 2000+列填充只有False
和True
值和每行我想獲得True
列。
比方說,我在熊貓以下數據幀:檢索列基於在數據幀的條件
import pandas as pd
pd.DataFrame({'A': [True, False], 'B':[False, True], 'C':[True, True], 'D':[False, False], 'E':[False, False]})
我怎樣才能得到只有那些真正的列?我有一個DataFrame 2000+列填充只有False
和True
值和每行我想獲得True
列。
您可以使用DataFrame df
中的任何行作爲列標籤的布爾值索引df.columns
。這將返回僅包含「真實」列的Index
對象:
>>> df.columns[df.loc[0]]
Index([u'A', u'C'], dtype=object)
因爲這是一個Index
對象不是一個Python列表,你可以使用tolist()
把它變成一個:
>>> df.columns[df.loc[0]].tolist()
['A', 'C']
我承擔你使用[row] [column]結構。下面這段代碼應工作:
>>> dictionary = {'A': [True, False], 'B':[False, True], 'C':[True, True], 'D':[False, False], 'E':[False, False]}
>>> itemList = list(dnaComplements.items())
>>> [x[0] for x in itemList if x[1][1] == True]
將返回
>>> ['B', 'C']
>>>
如果你想知道這列有所有真:
>>> L = pd.DataFrame({'A': [True, False], 'B':[False, True], 'C':[True, True], 'D':[False, False], 'E':[False, False]})
>>> L
A B C D E
0 True False True False False
1 False True True False False
>>> M = lambda x: x.all()
>>> P = L.apply(M)
>>> L = [ col for col in dict(P) if P[col]]
>>> L
['C']
我想弄清楚,什麼是您的預期輸出的例? –
例如我想獲得第0行的列表['A','C']和第1行的列表['B','C'] – efajardo