Используйте groupby
и transform
от mean
:
df['Input'].fillna(0).groupby(df['Input'].notna().cumsum()).transform('mean')
0 3.333333
1 3.333333
2 3.333333
3 6.000000
4 6.000000
5 6.000000
6 6.000000
7 15.000000
Name: Input, dtype: float64
Где,
df['Input'].notna().cumsum()
0 1
1 1
2 1
3 2
4 2
5 2
6 2
7 3
Name: Input, dtype: int64
Идея здесь состоит в том, чтобы вычислить среднее значение, отличное от NULL.включая все пустые ячейки, следующие за ним, и передают результат обратно на вход.Нам нужен вызов fillna
, потому что mean
по умолчанию будет игнорировать NaN.