Python 3.x 通过两个值的平均值填充nan

Python 3.x 通过两个值的平均值填充nan,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有以下数据帧: 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值,

我有以下数据帧:

      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

对于数据帧中的所有其他空值,如果发生,也是如此。
我花了很多时间思考精确的解决方案,但找不到。我该怎么做

使用缺失值的正向填充,添加misng值的反向填充,最后除以
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