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

使用SimpleImputer按列最小值填充缺失值时报ValueError如何解决

报错原因
  • 数值列定义错误:你在定义numeric_cols时额外给X_test.select_dtypes(exclude=['object']).columns外层套了一层列表,导致numeric_cols是仅包含1个元素的列表,元素是所有数值列的Index集合。循环遍历时col实际是全部数值列的组合,不是单个列名。
  • 参数类型不匹配:当col是全部数值列的组合时,X_test[col].min()返回的是所有数值列的最小值组成的Series对象,而SimpleImputer的constant策略要求fill_value为单个数值,传入Series不符合参数要求,因此触发报错。
  • 循环逻辑错误:即使修复列定义问题,你在循环中每次都对完整的numeric_df做填充转换,会反复覆盖之前的填充结果,无法实现逐列填充的需求。
修复方案

推荐直接使用pandas原生方法实现,代码更简洁高效:

import pandas as pd
# 提取数值列
numeric_df = X_test.select_dtypes(exclude=['object'])
# 每列用自身的最小值填充缺失值
imputed_numeric_X_test = numeric_df.fillna(numeric_df.min())

如果需要使用SimpleImputer实现,正确写法如下:

from sklearn.impute import SimpleImputer
numeric_df = X_test.select_dtypes(exclude=['object'])
# 传入各列最小值作为对应列的填充值
my_imputer = SimpleImputer(strategy='constant', fill_value=numeric_df.min().values)
imputed_numeric_X_test = pd.DataFrame(
    my_imputer.fit_transform(numeric_df),
    columns=numeric_df.columns
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:24:02