我正在尝试学习熊猫,但我对以下内容感到困惑。我想用行平均值替换 DataFrame 中的 NaN。因此,像 df.fillna(df.mean(axis=1))
这样的东西应该可以工作,但由于某种原因它对我来说失败了。我错过了什么,我在做什么有问题吗?是因为没有实施吗? 在这里查看链接
import pandas as pd
import numpy as np
pd.__version__
Out[44]:
'0.15.2'
In [45]:
df = pd.DataFrame()
df['c1'] = [1, 2, 3]
df['c2'] = [4, 5, 6]
df['c3'] = [7, np.nan, 9]
df
Out[45]:
c1 c2 c3
0 1 4 7
1 2 5 NaN
2 3 6 9
In [46]:
df.fillna(df.mean(axis=1))
Out[46]:
c1 c2 c3
0 1 4 7
1 2 5 NaN
2 3 6 9
然而这样的事情看起来工作正常
df.fillna(df.mean(axis=0))
Out[47]:
c1 c2 c3
0 1 4 7
1 2 5 8
2 3 6 9
原文由 Aenaon 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如评论的那样, fillna 的轴参数是 NotImplemented 。
注意:这在这里很重要,因为您不想用第 n 行平均值填充第 n 列。
现在你需要遍历:
另一种方法是 fillna 转置然后转置,这可能更有效……