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

Pandas如何删除最后3列值为0的行(无需指定固定列名)

pandas动态取最后3列过滤全0行实现方法

核心思路

不需要硬编码最后3列的列名,通过pandas的位置索引直接定位最后3列,基于这3列的值做行过滤即可,列名动态变动也不会影响逻辑。

完整实现代码

import pandas as pd

# 测试数据构造
df1 = pd.DataFrame({
    'Region': ['LCA', 'BCC', 'AAC'], 
    'Jul': [233, 0, 0],
    'Aug': [345, 0, 0],
    'Sep': [366, 0, 0]
})

# 过滤逻辑:保留最后3列不全为0的行
df_processed = df1[df1.iloc[:, -3:].ne(0).any(axis=1)]

逻辑说明

  • df1.iloc[:, -3:]:按位置选择数据,第一个冒号选中所有行,-3:表示从倒数第3列开始取到最后一列,完全不依赖列名,适配列名动态变化的场景。
  • .ne(0):逐元素判断值是否不等于0,返回同形状的布尔型DataFrame,非0值位置为True,0值位置为False。
  • .any(axis=1):按行做逻辑判断,只要一行内有任意一个位置为True(即最后3列不全是0),该行就标记为保留;如果最后3列全为0,该行标记为过滤。

逻辑调整说明

如果你的业务规则是「最后3列只要出现0就删除该行」,也就是要求最后3列全为非0值才保留,把判断逻辑里的.any(axis=1)替换为.all(axis=1)即可。

示例数据运行上述代码后,得到的处理结果如下:

Region  Jul  Aug  Sep
0    LCA  233  345  366

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:39:05