我有一个带有nan
的数据框a = np.asarray([[1,2,3],[2,np.nan,4],[np.nan,5,1]])
x = pd.DataFrame(a)
x.fillna(x.mean(axis=1))
我得到了
0 1 2
0 1 2 3
1 2 3 4
2 2 5 1
很困惑,最后一行不应该是3,5,1?
答案 0 :(得分:0)
x.fillna()
仍然是按列操作。
x.mean(axis=1)
Out[73]:
0 2
1 3
2 3
dtype: float64
因此,第一列填充为2,第二列填充为3。
如果我尝试x.fillna(x.mean(axis=1), axis=1)
,我会
NotImplementedError: Currently only can fill with dict/Series column by column
或许解决方法是使用转置x.T.fillna(x.mean(axis=1)).T
Out[94]:
0 1 2
0 1 2 3
1 2 3 4
2 3 5 1