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

如何不指定index,按列值条件删除pandas DataFrame的对应行

实现方案

你可以直接通过pandas的布尔索引完成筛选,不需要手动指定待删除的行索引,这类矢量化操作在大数据集下效率远高于手动枚举索引:

方法1:按列名筛选(最常用)

仅保留col3取值为a的行,代码如下:

df = df[df['col3'] == 'a']

如果你更习惯用drop方法实现,也可以自动匹配待删除的索引:

df.drop(df[df['col3'] != 'a'].index, inplace=True)

两种写法执行后效果和你手动执行df.drop([2,4])完全一致。

方法2:按最后一列位置筛选(适配你提到的「保留最后一列取值为a」的需求)

如果你不需要固定列名,只需要统一判断最后一列的取值,可以用iloc定位最后一列的位置,不需要修改代码就能适配不同列名的数据集:

# iloc[:, -1] 代表取所有行的最后一列
df = df[df.iloc[:, -1] == 'a']

方法3:query语法(写法更简洁)

df = df.query("col3 == 'a'")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:45:00