简体   繁体   English

Pandas:用平均值填充系列中的空白

[英]Pandas: Fill gaps in a series with mean

Given df给定 df

df = pd.DataFrame({'distance': [0,1,2,np.nan,3,4,5,np.nan,np.nan,6]})

   distance
0       0.0
1       1.0
2       2.0
3       NaN
4       3.0
5       4.0
6       5.0
7       NaN
8       NaN
9       6.0

I want to replace the nans with the inbetween mean我想用中间平均值替换 nans

Expected output:预计 output:

   distance
0       0.0
1       1.0
2       2.0
3       2.5
4       3.0
5       4.0
6       5.0
7       5.5
8       5.5
9       6.0

I have seen this_answer but it's for a grouping which isn't my case and I couldn't find anything else.我已经看到了 this_answer但它是针对一个不是我的情况的分组,我找不到其他任何东西。

If you don't want df.interpolate you can compute the mean of the surrounding values manually with df.bfill and df.ffill如果你不想df.interpolate你可以用df.bfilldf.ffill手动计算周围值的平均值

(df.ffill() + df.bfill()) / 2

Out:出去:

   distance
0       0.0
1       1.0
2       2.0
3       2.5
4       3.0
5       4.0
6       5.0
7       5.5
8       5.5
9       6.0

How about using linear interpolation?使用线性插值怎么样?

print(df.distance.interpolate())

0    0.000000
1    1.000000
2    2.000000
3    2.500000
4    3.000000
5    4.000000
6    5.000000
7    5.333333
8    5.666667
9    6.000000
Name: distance, dtype: float64

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM