python – pandas DataFrame:将nan值与平均列替换

我有一个大多数用实数填充的大熊猫DataFrame,但也有几个nan值。

如何用列的平均值来替换它们?

这个问题非常类似于这个:numpy array: replace nan values with average of columns,但不幸的是,给出的解决方案对于大熊猫DataFrame不起作用。

您可以直接使用DataFrame.fillna填充nan:

In [27]: df 
Out[27]: 
          A         B         C
0 -0.166919  0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3       NaN -2.027325  1.533582
4       NaN       NaN  0.461821
5 -0.788073       NaN       NaN
6 -0.916080 -0.612343       NaN
7 -0.887858  1.033826       NaN
8  1.948430  1.025011 -2.982224
9  0.019698 -0.795876 -0.046431

In [28]: df.mean()
Out[28]: 
A   -0.151121
B   -0.231291
C   -0.530307
dtype: float64

In [29]: df.fillna(df.mean())
Out[29]: 
          A         B         C
0 -0.166919  0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 -0.151121 -2.027325  1.533582
4 -0.151121 -0.231291  0.461821
5 -0.788073 -0.231291 -0.530307
6 -0.916080 -0.612343 -0.530307
7 -0.887858  1.033826 -0.530307
8  1.948430  1.025011 -2.982224
9  0.019698 -0.795876 -0.046431

fillna的docstring说,这个值应该是一个标量或一个字母,但是它似乎与一个系列一起工作。如果你想通过一个dict,你可以使用df.mean()。to_dict()。

http://stackoverflow.com/questions/18689823/pandas-dataframe-replace-nan-values-with-average-of-columns

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – pandas DataFrame:将nan值与平均列替换