У меня есть данные, которые выглядят так, как показано ниже
id var window
1 0 3
1 0 3
1 9 3
1 1 3
1 0 3
1 10 5
1 0 12
2 0 12
2 3 4
2 0 12
2 5 12
Что я хотел бы сделать, так это вычислить скользящую сумму groupby «id» в зависимости от значения «var». Если "var" отличен от нуля, вычисляется скользящая сумма, длина скользящего окна берется из столбца "window"; если "var" равно нулю, скользящая сумма равна 0.
Ниже приведены желаемые результаты
id var window roll_sum
1 0 3 0
1 0 3 0
1 9 3 9
1 1 3 10
1 0 3 0
1 10 5 20
1 0 12 0
2 0 12 0
2 3 4 3
2 0 12 0
2 5 12 8
Кто-нибудь может помочь?
@a_guest, потому что я хочу вычислить roll_sum по «id». Несмотря на то, что длина окна равна 4, roll_sum суммирует только первые две строки с id = 2.





Почему
roll_sumдля строки-3обозначается как3, когда длина окна равна4?