我们说在pandas中有以下数据框:
import pandas as pd
pd.DataFrame({'A': [True, False], 'B':[False, True], 'C':[True, True], 'D':[False, False], 'E':[False, False]})
如何只获取True的列?我有一个包含2000+列的DataFrame,仅填充了False
和True
值,并且对于每一行,我希望获得True
列。
答案 0 :(得分:1)
您可以使用DataFrame df
中的任何行作为列标签的布尔索引df.columns
。这将返回仅包含“true”列的Index
对象:
>>> df.columns[df.loc[0]]
Index([u'A', u'C'], dtype=object)
由于这是一个Index
对象而不是Python列表,因此您可以使用tolist()
将其转换为一个:
>>> df.columns[df.loc[0]].tolist()
['A', 'C']
答案 1 :(得分:0)
我假设您使用[row] [column] -structure。以下代码应该有效:
>>> 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']
>>>
答案 2 :(得分:0)
如果你想知道哪一列都是True:
>>> 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']