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

Pandas数据框缺失值填充异常及列数据类型修改方案问询

针对LotFrontage填充无效问题的解决方案

问题根因

你的问题核心是Int64类型的列无法存储浮点数值:当你用浮点型的均值(70.049958)填充Int64类型的LotFrontage时,因为类型不兼容,填充操作实际没有生效,缺失值仍然存在。


方案1:先转浮点型再填充(推荐,无精度损失)

直接将LotFrontage转为浮点类型,再填充均值,这样浮点数值可以正常存入,彻底解决填充无效的问题:

# 转换LotFrontage列类型为float64
num_data['LotFrontage'] = num_data['LotFrontage'].astype('float64')
# 用列均值填充缺失值
num_data['LotFrontage'] = num_data['LotFrontage'].fillna(num_data['LotFrontage'].mean())
# 验证缺失值数量
num_data.isna().sum()

方案2:将均值取整后填充(适合允许整数的业务场景)

如果业务上LotFrontage只需要整数,可把计算出的均值四舍五入/取整后再填充,无需修改原列类型:

# 计算均值并四舍五入为整数(也可用int()直接取整)
lot_frontage_mean = round(num_data['LotFrontage'].mean())
# 填充缺失值
num_data['LotFrontage'] = num_data['LotFrontage'].fillna(lot_frontage_mean)

注意:此方法会丢失小数精度,需确认业务逻辑是否允许。

方案3:一键完成类型转换与填充

使用pd.to_numeric工具,自动处理类型转换并填充,适合快速批量操作:

# 转换为数值类型(无法转换的强制为NaN),再填充均值
num_data['LotFrontage'] = pd.to_numeric(num_data['LotFrontage'], errors='coerce').fillna(num_data['LotFrontage'].mean())

执行后,LotFrontage会自动转为浮点类型,缺失值也会被正确填充。


额外检查项

  • 查看num_data.dtypes确认所有数值列的类型是否正确,避免拆分时把数值列误分到分类型切片。
  • 确认均值计算是否正确:pandas的mean()默认会跳过缺失值,若担心可手动指定skipna=True。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:42:20