Рассмотрим фрейм данных:
df = pd.DataFrame({
"a": [None, None, None, None, 1, 2, -1, 0, 1],
"b": [5, 4, 6, 7, None, None, None, None, None]
})
>> a b
0 NaN 5.0
1 NaN 4.0
2 NaN 6.0
3 NaN 7.0
4 1.0 NaN
5 2.0 NaN
6 -1.0 NaN
7 0.0 NaN
8 1.0 NaN
Для каждого пропущенного значения в b Я хочу взять среднее из предыдущих 4 значений плюс значение в a с тем же индексом. Например, после 7:
4: (5 + 4 + 6 + 7) / 4 + 1 = 6.5
5: (6.5 + 4 + 6 + 7) / 4 + 2 = 7.88
...
Результирующий кадр данных должен быть:
>> a b
0 NaN 5.00
1 NaN 4.00
2 NaN 6.00
3 NaN 7.00
4 1.0 6.50
5 2.0 7.88
6 -1.0 5.84
7 0.0 6.80
8 1.0 7.76
Как этого добиться?