python - Pandas 数据帧 : replace nan values with average of columns

标签 python pandas nan

我有一个 Pandas DataFrame,其中大部分填充了实数,但其中也有一些 nan 值。

如何将 nan 替换为它们所在列的平均值?

这个问题与这个问题非常相似:numpy array: replace nan values with average of columns但不幸的是,那里给出的解决方案不适用于 pandas 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 的文档字符串说 value 应该是标量或字典,但是,它似乎也适用于 Series .如果你想传递一个字典,你可以使用 df.mean().to_dict()

关于python - Pandas 数据帧 : replace nan values with average of columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18689823/

相关文章:

python - 在 pandas DataFrame 中将某些值替换为 NaN 时如何避免数据类型转换?

python - 在 Python (PyQt) 中创建二维码

python - 在 pdb 中打印值

python - 大数据回归

python - Iterrows 滚动总和

python - 对于数据框中的每一列和单元格,使用该列中的随机值填充 NaN/Nulls

arrays - 如何用下一个最接近的数字替换数组中的 NaN?

r - 删除具有nan值的行

python - Keras 或 Tensorflow 函数绘制神经网络结构的 3D 图?

python - python中的返回语句