熊猫将零替换为最接近的平均非零值

时间:2019-07-19 09:54:03

标签: python pandas

我有一个数据框:

 df = pd.DataFrame({'A':[0,0,15,0,0,12,0,0,0,5]})

我想用最接近的非零值替换0值

例如,第一个值为0,然后我发现最接近的非零值为15,因此我将其替换为15,然后数据变为:[15,0,15,0,0,12,0,0,0,5],

然后对于除第一个值以外的所有值,我需要找到最接近的非零值的两侧,并将它们取平均值。因此对于第二个0,它将是(15 + 15)/ 2;第三个零是(15 + 12)/ 2

我只知道如何将零替换为最接近的值:

df['A'].replace(to_replace=0, method='ffill')

0     0
1     0
2    15
3    15
4    15
5    12
6    12
7    12
8    12
9     5

但是无法替换前两个零值,并且这种方法无法获得平均值。

1 个答案:

答案 0 :(得分:1)

虽然不完全相同,但是似乎可以通过应用linear interpolation来解决您的问题。

您可以使用interpolate,默认情况下会执行线性插值,将limit_direction设置为both,以便同时填充正向和反向:

df['A'] = df.A.interpolate(limit_direction='both')

     A
0  15.00
1  15.00
2  15.00
3  14.00
4  13.00
5  12.00
6  10.25
7   8.50
8   6.75
9   5.00