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

Python中删除数据集异常值行触发ValueError错误该如何解决

错误原因

  • np.where(pred==-1)的返回结果是一维元组,只有第一个元素是异常值对应的行位置数组,你后续直接将outlier_values(DataFrame对象)传入drop方法,完全不符合参数要求
  • pd.DataFrame.drop()方法接收的是待删除行的索引标签列表,你传入包裹了DataFrame的列表[outlier_values],参数维度不匹配,直接触发了对应报错

修正方案

你可以直接用布尔索引过滤异常值,写法更简洁不易出错:

#identify outliers
pred = iforest.fit_predict(x)
# 直接保留非异常值的行
x_new = x[pred != -1]

如果一定要用drop方法实现,写法如下:

#identify outliers
pred = iforest.fit_predict(x)
outlier_pos = np.where(pred==-1)[0] # 提取np.where返回元组的第一个元素,拿到一维位置数组
# 提取异常值对应的索引标签传入drop
x_new = x.drop(x.index[outlier_pos])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:18:03