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

Pandas中基于三列全零条件删除DataFrame行的问题求助

解决Pandas删除指定三列全为0的行的问题

错误原因分析

你之前的代码用&(逻辑与)连接三个条件,要求purchase_qty、other_adjustments、sold同时不为0才保留该行,这和你“仅删除三列全为0的行”的需求完全相反,导致所有purchase_qty为0的行都被错误过滤。

正确实现方式

有两种简洁写法可以满足需求:

方法1:取反“三列全为0”的判断

# 指定需要检查的目标列
cols_to_check = ['purchase_qty', 'other_adjustments', 'sold']
# 保留非三列全为0的行
test_df = df[~(df[cols_to_check] == 0).all(axis=1)]
  • df[cols_to_check] == 0:生成布尔DataFrame,标记每个单元格是否为0
  • .all(axis=1):判断每行的所有目标列是否都为0(返回布尔Series)
  • ~:对结果取反,保留不是三列全为0的行

方法2:判断“至少有一列不为0”

cols_to_check = ['purchase_qty', 'other_adjustments', 'sold']
# 保留至少有一列不为0的行
test_df = df[(df[cols_to_check] != 0).any(axis=1)]
  • df[cols_to_check] != 0:标记每个单元格是否不为0
  • .any(axis=1):判断每行是否至少有一列不为0,符合条件的行直接保留

验证结果

针对你的示例DataFrame,运行上述代码后,仅第0行(三列全为0)会被删除,其余行全部保留,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:45:30