我有一个数据框 df 定义如下:
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
和一个 list lst = ["A","C"]
我想根据 'True'
的值过滤 df 中的行对于 lst
中的列.也就是说,我想得到我的结果数据框:
A B C D E F
1 True False True True True HI
3 True False True False False HI
除了遍历列表中的列名并对其进行过滤之外,还有更好的解决方案吗?
最佳答案
使用 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
关于python - 根据列表中列的值过滤 Pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63303313/