【问题标题】:pandas dataframe fill nan by average of two valuespandas dataframe 用两个值的平均值填充 nan
【发布时间】:2020-04-17 07:45:19
【问题描述】:

我有以下数据框:

      A    label
0    1.0     a
1    2.0     a
2    3.0     a
3    NaN     a
4    NaN     a
5    NaN     a
6    9.0     a
7    8.0     a
8    7.0     a
9    NaN     a
10   NaN     a
11  21.0     a
12  32.0     a
13  12.0     a

我想在A列中填写nan值如下:

在索引 3,4 和 5 处填充空值:通过取索引 2 和 6 处的值的平均值,即 (3+9)/2。

在索引 9 和 10 处填充空值:通过取索引 8 和 11 处的值的平均值,即 (7+21)/2。

同样对于数据帧中的所有其他空值,如果发生。 我花了很多时间思考精确的解决方案,但找不到一个。我怎样才能做到这一点?

【问题讨论】:

    标签: python-3.x pandas dataframe


    【解决方案1】:

    使用前向填充缺失值,添加回填缺失值,最后除以2 表示平均值:

    df['A'] = df.A.ffill().add(df.A.bfill()).div(2)
    print (df)
           A label
    0    1.0     a
    1    2.0     a
    2    3.0     a
    3    6.0     a
    4    6.0     a
    5    6.0     a
    6    9.0     a
    7    8.0     a
    8    7.0     a
    9   14.0     a
    10  14.0     a
    11  21.0     a
    12  32.0     a
    13  12.0     a
    

    详情

    print (df.assign(ffill = df.A.ffill(),
                     bfill = df.A.bfill(),
                     both  = df.A.ffill().add(df.A.bfill()),
                     fin = df.A.ffill().add(df.A.bfill()).div(2)))
           A label  ffill  bfill  both   fin
    0    1.0     a    1.0    1.0   2.0   1.0
    1    2.0     a    2.0    2.0   4.0   2.0
    2    3.0     a    3.0    3.0   6.0   3.0
    3    NaN     a    3.0    9.0  12.0   6.0
    4    NaN     a    3.0    9.0  12.0   6.0
    5    NaN     a    3.0    9.0  12.0   6.0
    6    9.0     a    9.0    9.0  18.0   9.0
    7    8.0     a    8.0    8.0  16.0   8.0
    8    7.0     a    7.0    7.0  14.0   7.0
    9    NaN     a    7.0   21.0  28.0  14.0
    10   NaN     a    7.0   21.0  28.0  14.0
    11  21.0     a   21.0   21.0  42.0  21.0
    12  32.0     a   32.0   32.0  64.0  32.0
    13  12.0     a   12.0   12.0  24.0  12.0
    

    【讨论】:

      猜你喜欢
      • 2015-02-14
      • 2020-10-20
      • 1970-01-01
      • 2013-09-12
      • 2016-01-08
      • 2020-10-21
      • 1970-01-01
      相关资源
      最近更新 更多