pandas DataFrame:用列的平均值替换nan值

发布于 2021-02-02 23:08:57

我的pandas DataFrame主要填充了实数,但是其中也包含一些nan值。

如何nan用列的平均值替换s?

这个问题与这个问题非常相似:numpy array:用列的平均值替换nan值, 但是不幸的是,给出的解决方案不适用于pandas DataFrame。

关注者
0
被浏览
107
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你可以直接使用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()



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看