python - 根据列表中列的值过滤 Pandas 数据框列

标签 python pandas dataframe

我有一个数据框 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/

相关文章:

python - Discord 使用 BytesIO 发送空白文本文件

python - 重新排列 pandas DataFrame 的列,使总计最高的列排在第一位

Python - Pandas 导出到 csv 或 dat 文件删除无或 numpy.nan

python - 按星期几对 Python DataFrame 进行排序

python - 应用数据帧方法后 numpy 数组末尾的额外数据类型

R:将选定列中的值添加到大量其他列

python - Pandas - 正确使用 Apply 函数

python - 拟合LogisticRegression时发现输入变量样本数量不一致

python - 如何拥有两个优化器,一个优化器训练整个参数,另一个训练部分参数?

python - 为什么 toPandas() 会抛出错误而 .show() 工作得很好?