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

从数据集中删除异常值时遇错误,请求技术协助

删除异常值索引报错的解决方法

问题根源

你用df.drop(outlier_indices, inplace=True)删除异常值时触发KeyError: '[10 18 28] not found in axis',核心原因是:你传入的outlier_indices里的数值不是当前DataFrame的行索引值——大概率你拿到的是数据的「位置下标」(比如用numpy计算出的行位置),但DataFrame的行索引可能不是从0开始的连续整数,或者之前的操作已经修改过索引。

快速解决方法

方法1:把位置下标转成真实索引值删除

如果outlier_indices是位置下标(比如np.where()返回的结果),用下面的代码替换原删除语句:

df.drop(df.index[outlier_indices], inplace=True)

df.index[outlier_indices]会把位置下标转换成DataFrame对应的真实索引值,这样就能精准定位到要删除的行。

方法2:先重置索引再删除

如果你的DataFrame索引混乱,先重置成连续整数索引,再执行删除操作:

# 重置索引,drop=True避免保留原索引列
df = df.reset_index(drop=True)
# 现在可以直接用outlier_indices删除
df.drop(outlier_indices, inplace=True)

方法3:用位置直接定位删除

也可以通过iloc定位到目标行,再取其索引执行删除:

df = df.drop(df.iloc[outlier_indices].index)

验证操作

删除后打印数据行数,确认异常值行已被移除:

print(df.shape)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:14:57