You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中筛选指定列全为0的行

解决Pandas中筛选指定列全为0的行的问题

嘿,我看到你在筛选DataFrame里指定列全为0的行时卡壳了,其实问题出在你引用列列表的方式上,咱们来一步步修正它!

首先,你的错误在于用了df['mylist']——这会让Pandas试图去找名为'mylist'的列,但你实际想引用的是你定义的列表mylist里的列(也就是a和b)。

正确的实现步骤

  1. 先定义要检查的列列表(和你之前的一样):
    mylist = ['a','b']
    
  2. 生成一个布尔掩码,用来标记哪些行的指定列全部为0:
    mask = df[mylist].eq(0).all(axis=1)
    
    • 解释一下:
      • df[mylist]:选中你指定的a和b两列
      • .eq(0):把这两列的每个元素和0比较,得到一个布尔值的DataFrame
      • .all(axis=1):按行检查,只有当该行的所有指定列都为True(也就是都等于0)时,返回True
  3. 用这个掩码筛选出符合条件的行:
    selection = df.loc[mask]
    

完整示例运行

咱们把你的示例DataFrame和正确代码放在一起运行:

import pandas as pd

df = pd.DataFrame([[1,2,3,6], [2,4,6,8], [0,0,3,4],[1,0,3,4],[0,0,0,0]],columns =['a','b','c','d'])
mylist = ['a','b']
mask = df[mylist].eq(0).all(axis=1)
selection = df.loc[mask]

print(selection)

输出结果和你期望的完全一致:

a  b  c  d
2  0  0  3  4
4  0  0  0  0

补充:另一种写法

你也可以用==代替.eq(0),效果是完全一样的:

mask = (df[mylist] == 0).all(axis=1)

内容的提问来源于stack exchange,提问作者doctorer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:44:54