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

Pandas删除DataFrame特定列含-9的行时提示值不在轴上如何解决

错误原因

  • pandas的drop()方法入参是要删除的行索引/列名,不是要匹配的字段取值。你之前的所有写法都是要求pandas删除「索引值等于-9」的行,但你的索引列表里根本不存在-9这个值,自然会报not found in axis错误,和MONTO_DE_INGRESO_TOTAL列里有没有-9的取值没有关系。
  • 你直接对单列Series执行drop()操作也不会影响原DataFrame,就算执行成功也只会修改单独提取出来的这个Series对象,原DataFrame的行不会被删除。

正确实现方式

方法1:布尔索引过滤(最常用)

直接筛选出MONTO_DE_INGRESO_TOTAL列不等于-9的行,赋值覆盖原变量即可:

# 过滤后生成新的DataFrame,原数据不会被直接修改
ocupados = ocupados[ocupados['MONTO_DE_INGRESO_TOTAL'] != -9]

# 可以执行下面的语句验证过滤效果,确认-9是否还存在
print(ocupados['MONTO_DE_INGRESO_TOTAL'].min())

如果担心浮点数精度导致匹配失败,可以用精度范围判断替换等值判断:

ocupados = ocupados[~ocupados['MONTO_DE_INGRESO_TOTAL'].between(-9.0001, -8.9999)]

方法2:用drop方法实现(可读性较低,不推荐)

如果一定要用drop()实现,需要先拿到所有取值为-9的行的索引,再传给drop()方法:

# 先获取符合删除条件的行索引
drop_index = ocupados[ocupados['MONTO_DE_INGRESO_TOTAL'] == -9].index
# 按索引删除对应行
ocupados = ocupados.drop(drop_index, axis=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:15:03