根据列表中列的值过滤熊猫数据框列

时间:2020-08-07 13:56:31

标签: python pandas dataframe

我有一个如下定义的数据框df:

ASSUME di:PTR DPT
mov [di-SIZEOF DPT].bHdSettle,15
.....
ASSUME di:NOTHING
df = pd.DataFrame()
df["A"] = ['True','True','True','True','True']
df["B"] = ['True','False','True','False','True']
df["C"] = ['False','True','False','True','False']
df["D"] = ['True','True','False','False','False']
df["E"] = ['False','True','True','False','True']
df["F"] = ['HI','HI','HI','HI','HI']

和一个列表

>> df

      A      B      C      D      E   F
0  True   True  False   True  False  HI
1  True  False   True   True   True  HI
2  True   True  False  False   True  HI
3  True  False   True  False  False  HI
4  True   True  False  False   True  HI

我想基于lst = ["A","C"] 中列的值为'True'来过滤df中的行。 也就是说,我希望将得到的数据框设为:

lst

与其遍历列表中的列名并对其进行过滤,还有什么更好的解决方案?

1 个答案:

答案 0 :(得分:5)

在列轴(DatFrame.all)上使用axis=1

df[df[lst].all(axis=1)]

      A      B     C      D      E   F
1  True  False  True   True   True  HI
3  True  False  True  False  False  HI

详细信息:

我们使用df[lst]获取范围内的列,然后使用all来检查哪些行具有“ True”的“全部”:

df[lst].all(axis=1)

0    False
1     True
2    False
3     True
4    False
dtype: bool