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

TypeError:float()参数不能为SimpleImputer Age字段缺失值填充报错求助

问题根因
  • 参数书写错误:fillna方法的inplace参数需要作为独立入参传递,你错误将其放入了value参数的字典中,参数传递逻辑错误。
  • 列类型异常:报错提示TypeError: float() argument must be a string or a number, not 'SimpleImputer',说明Age列已被错误赋值为SimpleImputer对象类型,而非原本的数值类型,导致计算中位数时无法完成类型转换。
  • 代码不一致:你贴出的代码与实际运行代码不符,报错堆栈中第二行存在.values()调用,而median()返回的是单个标量数值,没有values()方法,会额外触发属性错误。
修复方案

原生Pandas实现

import pandas as pd

# 先修正Age列类型,强制转数值,无法转换的设为空值
all_data['Age'] = pd.to_numeric(all_data['Age'], errors='coerce')
all_data = pd.concat([train_data, test_data])
average = all_data.Age.median()
print('Average Age: {0}'.format(average))
# 修正fillna参数位置
train_data.fillna(value={'Age': average}, inplace=True)
test_data.fillna(value={'Age': average}, inplace=True)

Scikit-learn SimpleImputer实现

from sklearn.impute import SimpleImputer

# 初始化中位数填充器
imputer = SimpleImputer(strategy='median')
# fit_transform接收二维数组,返回填充后的数值,直接赋值给Age列
train_data['Age'] = imputer.fit_transform(train_data[['Age']])
test_data['Age'] = imputer.transform(test_data[['Age']])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:24:05