Вы можете использовать rolling
с окном n
, чтобы получить скользящее среднее предыдущих индексов n
, а затем заполнить свой na следующими значениями:
df = pd.DataFrame({'col1':[1,2,3,4,5,6,np.nan,8,9,10]})
df['rollmean5'] = df['col1'].rolling(5,center=False,min_periods=1).mean()
df['col1'] = df['col1'].fillna(df['rollmean5'])
При использовании скользящего окна 5 получается среднее значение текущего индекса и предыдущего 4.
Выход:
col1 rollmean5
0 1.0 1.00
1 2.0 1.50
2 3.0 2.00
3 4.0 2.50
4 5.0 3.00
5 6.0 4.00
6 4.5 4.50
7 8.0 5.75
8 9.0 7.00
9 10.0 8.25
И, очевидно, вы можете отказаться от только что созданного rollmean5
, когда закончите.