我对熊猫有一个奇怪的问题。我有一个具有多个NaN
值的数据帧。我想我可以使用column means填充那些NaN
值(也就是说,用它的column means填充每个NaN
值),但是当我尝试以下操作时
col_means = mydf.apply(np.mean, 0)
mydf = mydf.fillna(value=col_means)
我仍然看到一些
NaN
值。为什么?是因为我的原始数据帧中的
NaN
值比col_means
中的条目多吗?按列填充和按行填充到底有什么区别? 最佳答案
您可以使用fillna
系列df.mean()
(类似于dict):
In [11]: df = pd.DataFrame([[1, np.nan], [np.nan, 4], [5, 6]])
In [12]: df
Out[12]:
0 1
0 1 NaN
1 NaN 4
2 5 6
In [13]: df.fillna(df.mean())
Out[13]:
0 1
0 1 5
1 3 4
2 5 6
注意:
df.mean()
是行平均值,它给出了填充值:In [14]: df.mean()
Out[14]:
0 3
1 5
dtype: float64
注意:如果
df.mean()
有一些nan值,那么这些值将在数据帧的fillna中使用,也许您希望在这个系列上使用fillna
,即。df.mean().fillna(0)
df.fillna(df.mean().fillna(0))