根据DataFrame中的条件检索列

时间:2014-12-26 17:28:12

标签: python pandas dataframe

我们说在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,仅填充了FalseTrue值,并且对于每一行,我希望获得True列。

3 个答案:

答案 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']