我读了cvs文件。我的数据帧包含真正浮动的字符串。也有价值观
基本上我想把NaN转换成mean,把字符串转换成float
有一些方法可以提供帮助,比如fillna
可以替换nan值,因为我无法得到平均值(因为值是字符串)
还有一个float()
方法,但是如果它应用在NaN上,它会给出0,这对我来说不好
用平均值替换NaN值并将字符串转换为浮点值有什么好的决定吗
数据帧示例:
1 9,5 50,6 45,75962845 2,6 6,5 11 8,9 NaN
2 10,5 59,9 74,44538987 0 4,5 8,9 NaN NaN
3 20,1 37,7 NaN 0,8 2,5 9,7 6,7 4,2
4 10,7 45,2 10,9710853 0,4 3,1 6,9 5,5 4,7
5 13,2 39,9 9,23393302 0 5,8 9,2 7,4 4,3
作为A。莱斯特拉提议我用
for col in df.columns:
df[col] = pd.to_numeric(df[col], errors='coerce')
df[col].fillna(df[col].mean())
to_numeric
和errors='coerce'
创建了许多新的nanerrors='ignore'
参数看起来不错,但在df[col].fillna(df[col].mean())
行上给出了TypeError: Can't convert 'int' object to str implicitly
p.S.2正如piRSquared所建议的,我试图在read\csv函数中添加decimal=','
。但它仍然给出相同的错误TypeError: Can't convert 'int' object to str implicitly
如果使用
pd.read_csv
,则应该使用decimal=','
参数读入数据。否则,如果您被这个数据框困住了,您可以将它转储到csv中,然后再试一次填写缺失的数据变得很容易
首先,需要使用
to_numeric
将字符串转换为浮点:(使用“强制”将不可转换的值替换为NaN,这是您在这里想要的)。然后您就可以使用
fillna
:相关问题 更多 >
编程相关推荐