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

如何通过列号删除DataFrame中值处于20至50之间的行?

解决方法:通过列号删除指定范围的行

没问题,这事儿其实很简单,咱们直接用pandas的**位置索引(iloc)**来定位第一列就行,完全不用依赖列名。

核心实现代码

你需要保留第一列值≤20 或者 ≥50的行,直接用布尔索引过滤即可:

# 过滤并重新赋值给df,保留符合条件的行
df = df[(df.iloc[:, 0] <= 20) | (df.iloc[:, 0] >= 50)]

代码细节解释

  • df.iloc[:, 0]:iloc是pandas专门用于按位置索引的方法,:表示选中所有行,0表示选中第一列(pandas的列位置从0开始计数)。
  • (df.iloc[:,0] <=20) | (df.iloc[:,0] >=50):生成一个布尔数组,标记哪些行需要保留(满足其中一个条件即可)。
  • 将这个布尔数组传入df,就会自动筛选出符合条件的行,替换原来的df。

另一种等价写法(取反逻辑)

如果你更习惯用“删除大于20且小于50的行”的直接逻辑,也可以这样写:

df = df[~((df.iloc[:, 0] > 20) & (df.iloc[:, 0] < 50))]

这里的~表示对布尔条件取反,也就是排除掉20 < 值 <50的行,效果和上面的代码完全一致。

为什么之前的代码可能出错?

如果之前你直接用df[:,0]这种写法,pandas会报错——因为DataFrame不支持直接用[:,0]取列,必须用iloc(按位置)或者loc(按列名),所以iloc[:,0]才是正确的按位置选取第一列的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:08:32