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

如何修改Pandas代码删除含3个及以上0值或全0的DataFrame行

解决方法:删除DataFrame中含3个及以上0值的行

没问题,我来帮你搞定这个需求!你原来的代码df = df[(df.T != 0).any()]只能过滤掉全0行,因为它只是检查每行有没有至少一个非0值。要实现删除全0行或含3个及以上0值的行,咱们可以换个思路——先计算每行的0值数量,再筛选出符合要求的行。

方法一:直接筛选保留符合条件的行

最直观的写法是先统计每行的0值个数,然后只保留0值个数小于3的行:

# 计算每行的0值数量,筛选出数量<3的行
df = df[(df == 0).sum(axis=1) < 3]

代码逻辑解释:

  • df == 0:生成一个布尔值DataFrame,每个位置为True表示对应元素是0
  • .sum(axis=1):按行求和(axis=1代表行方向),得到每行的0值总数
  • < 3:筛选出0值总数小于3的行,自然就排除了全0行(比如你的示例中行1有4个0,会被过滤)

方法二:直接删除不符合条件的行

如果你更习惯用drop方法,也可以这样写:

# 找出0值数量>=3的行的索引,然后删除这些行
df = df.drop(df[(df == 0).sum(axis=1) >= 3].index)

对应你的示例验证

用你的示例df测试:
原df:

ind_keyprtCntfldCntTmCntbmCnt
10000
22003
30100
40110

运行代码后得到的Resultdf:

ind_keyprtCntfldCntTmCntbmCnt
22003
40110

完美符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:22:44