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

如何基于前N列删除DataFrame行?删除前三列均为0的行(不使用列名)

解决DataFrame删除前三列全为0行的问题

没问题,这种不依赖列名的场景我经常碰到,毕竟列名变动太常见了。下面给你两种简洁的实现方式,都能精准删除前三列数值全为0的行:

方法一:直接过滤(推荐)

一行代码搞定,用布尔索引直接保留符合条件的行:

import pandas as pd

# 假设你的DataFrame名为df
df = df[~df.iloc[:, :3].eq(0).all(axis=1)]

代码解释:

  • df.iloc[:, :3]:通过位置选取所有行的前三列,完全不依赖列名,不管列名怎么变都生效
  • .eq(0):将前三列的每个元素转换为布尔值(等于0则为True,否则False)
  • .all(axis=1):按行判断,当某一行的前三列全为True(也就是全0)时返回True
  • ~:取反操作,保留那些前三列不全为0的行

方法二:先定位再删除

如果你想更清晰地看到要删除的行,可以先获取这些行的索引,再执行删除:

# 找出前三列全为0的行索引
drop_indices = df[df.iloc[:, :3].eq(0).all(axis=1)].index
# 删除指定索引的行
df = df.drop(drop_indices)

举个实际例子:

假设你的原始DataFrame是这样的:

任意列名1  任意列名2  任意列名3  其他列
0       1       2       3      4
1       0       0       0      5
2       0       0       0      6
3       7       8       9     10

运行上述代码后,会删除索引1和2对应的行(也就是你说的第2、3行),最终结果如下:

任意列名1  任意列名2  任意列名3  其他列
0       1       2       3      4
3       7       8       9     10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:27:31