我有一个如下定义的数据框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
与其遍历列表中的列名并对其进行过滤,还有什么更好的解决方案?
答案 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