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

CSV读取的DataFrame:字符串转浮点数及NaN均值填充方案咨询

解决字符串浮点数列的NaN填充问题

我来给你捋捋这个问题的解决思路哈,你遇到的核心卡点就是列的类型不对——字符串类型没法直接计算均值,硬转float还会把NaN变成0,完全不符合需求。咱们分两步走就能搞定:

第一步:把字符串列转成数值类型(统一处理NaN)

首先得把那些字符串格式的浮点数转换成pandas能识别的数值类型,同时把所有无效值(不管是原来的NaN,还是写成"NaN"的字符串)都统一变成pandas标准的NaN。用pd.to_numeric()就行,记得加errors='coerce'参数,它会自动把转不动的内容变成NaN:

import pandas as pd

# 假设你的DataFrame叫df,目标列是'target_col'
df['target_col'] = pd.to_numeric(df['target_col'], errors='coerce')

第二步:用均值填充NaN

现在列已经是数值类型了,计算均值和填充就顺理成章了。先算列的均值(默认会忽略NaN),再用fillna()把NaN替换掉:

# 计算列的均值
col_avg = df['target_col'].mean()
# 填充NaN
df['target_col'] = df['target_col'].fillna(col_avg)

嫌麻烦的话,也可以把两步合并成一行代码:

df['target_col'] = pd.to_numeric(df['target_col'], errors='coerce').fillna(df['target_col'].mean())

举个实际例子验证

假设你的原始数据长这样:

target_col
"2.5"
"4.7"
NaN
"6.1"
"NaN"

跑完代码后,target_col就变成了:

target_col
2.5
4.7
4.433...
6.1
4.433...

这样既把字符串转成了浮点数,又用均值填充了所有NaN,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:26:25