Я использую существующее решение, чтобы попытаться получить кумулятивную сумму, которая сбрасывается после определенного значения (в данном случае> = 16). В настоящее время я получаю следующий вывод, но есть случаи, когда сумма все еще больше 16.
Size cumsum
8 8
8 16 ---correct
8 8
8 16 ---correct
7 7
6 13 (should be reset here since next value causes cumsum >16)
7 20 ---incorrect
6 6
5 11
2 13
Код, который я использую:
df = pd.DataFrame({'Size':[8,8,8,8,7,6,7,6,5,2]})
ls = []
cumsum = 0
last_reset = 0
for _, row in df.iterrows():
cumsum = cumsum + row.Size
ls.append(cumsum)
if cumsum >= 16:
last_reset = cumsum
cumsum = 0
df['cumsum'] = ls
Любые идеи, как исправить это?