Мне нужно найти совокупную сумму 3 предыдущих строк без расчета текущей, вот короткий пример:
Вот результат, которого я хочу достичь:
Можешь попробовать:
df['SUM'] = (df.groupby('ID')['SUM']
.transform(lambda x: x.rolling(4,min_periods=1).sum())
.sub(df['SUM'])
)
Выход:
ID SUM
0 A 0
1 B 0
2 B 5
3 B 9
4 B 10
5 C 0
6 C 1
Используйте groupby.apply
с shift
и rolling
df['SUM'] = df.groupby('ID')['SUM'].apply(lambda x: x.shift(fill_value=0)
.rolling(3,min_periods=1).sum())
Out[50]:
ID SUM
0 A 0.0
1 B 0.0
2 B 5.0
3 B 9.0
4 B 10.0
5 C 0.0
6 C 1.0
Большое спасибо!! Это работает для меня :)