回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我读了cvs文件。我的数据帧包含真正浮动的字符串。也有价值观<br/>
基本上我想把NaN转换成mean,把字符串转换成float<br/>
有一些方法可以提供帮助,比如<code>fillna</code>可以替换nan值,因为我无法得到平均值(因为值是字符串)<br/>
还有一个<code>float()</code>方法,但是如果它应用在NaN上,它会给出0,这对我来说不好<br/>
用平均值替换NaN值并将字符串转换为浮点值有什么好的决定吗<br/>
数据帧示例:</p>
<pre><code>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
</code></pre>
<p>作为A。莱斯特拉提议我用</p>
<pre><code>for col in df.columns:
df[col] = pd.to_numeric(df[col], errors='coerce')
df[col].fillna(df[col].mean())
</code></pre>
<p><code>to_numeric</code>和<code>errors='coerce'</code>创建了许多新的nan<code>errors='ignore'</code>参数看起来不错,但在<code>df[col].fillna(df[col].mean())</code>行上给出了<code>TypeError: Can't convert 'int' object to str implicitly</code></p>
<p>p.S.2正如piRSquared所建议的,我试图在read\csv函数中添加<code>decimal=','</code>。但它仍然给出相同的错误<code>TypeError: Can't convert 'int' object to str implicitly
</code></p>