pandas DataFrame:用列的平均值替换nan值
pandas DataFrame:用列的平均值替换nan值
我有一个pandas DataFrame,大部分填充了实数,但有一些nan
的值。
我该如何用它所在列的平均值来替换nan
值?
这个问题与这个问题非常相似:numpy array: replace nan values with average of columns,但不幸的是,那里给出的解决方案对于pandas DataFrame不起作用。
admin 更改状态以发布 2023年5月22日
您可以直接使用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
的文档字符串说value
应该是一个标量或字典,但它似乎也可以使用Series
。如果您想传递一个字典,可以使用df.mean().to_dict()
。