答案 0 :(得分:0)
将 GroupBy.transform
与由 Series.cumsum
创建的组与 Series.isna
的测试缺失值一起使用,并仅分配给具有非缺失值的行,并使用 ~
的反转掩码:
df = pd.DataFrame({'Input':[5,6,7,np.nan, np.nan, np.nan,13,32,12]})
m = df['Input'].isna()
df.loc[~m, 'output'] = df[~m].groupby(m.cumsum())['Input'].transform('mean')
print (df)
Input output
0 5.0 6.0
1 6.0 6.0
2 7.0 6.0
3 NaN NaN
4 NaN NaN
5 NaN NaN
6 13.0 19.0
7 32.0 19.0
8 12.0 19.0