【发布时间】:2019-07-22 20:40:58
【问题描述】:
我需要对分组的数据框进行累积求和,但是当之前的值为负数而当前值为正数时,我需要将其重置。
在 R 中,我可以使用 ave() 函数对 groupby 应用条件,但我不能在 python 中这样做,所以我在思考解决方案时遇到了一些麻烦。谁能帮我吗?
这是一个示例:
import pandas as pd
df = pd.DataFrame({'PRODUCT': ['A'] * 40, 'GROUP': ['1'] * 40, 'FORECAST': [100, -40, -40, -40]*10, })
df['CS'] = df.groupby(['GROUP', 'PRODUCT']).FORECAST.cumsum()
# Reset cumsum if
# condition: (df.FORECAST > 0) & (df.groupby(['GROUP', 'PRODUCT']).FORECAST.shift(-1).fillna(0) <= 0)
【问题讨论】:
-
您的预期输出是什么?所以,我们可以检查一下我们的解决方案。