作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的条件很简单:
如果该月的总和//100:
print sum and reset cumsum index
其他:
keep cumsumming
这是我的数据:
data = dict(
Year=['2018', '2018', '2018', '2018', '2018', '2017', '2017', '2017'],
Month=['08', '08', '04', '05', '05', '06', '02', '01'],
Money=[26, 50, 25, 45, 20, 36, 84, 24]
)
这是我的尝试:
df = pd.DataFrame(data)
df = df.groupby(['Year', 'Month']).sum()
df['cum_y'] = df.groupby(['Year']).Money.cumsum()
df['cum_m'] = df.groupby([lambda x: x // 100], level=0).Money.cumsum()
df['cum_m'] = df.groupby(lambda x: [x if x // 100 else None]).Money.cumsum()
df['cum_m'] = df.groupby(['Money']).agg(lambda x: x // 100).cumsum()
我想要类似的东西:
Money cum_y cum_m (Payout actually)
Year Month
2017 01 24 24 x (means None)
02 84 108 108 - reset cumsum counter()
06 36 144 x (36)
2018 04 25 25 x (61)
05 65 90 126 - reset cumsum counter()
08 76 166 x (76)
最佳答案
我知道应该尽可能避免迭代,但这里有一个使用迭代的解决方案:
total = 0
Cumsum = []
for item in df.Money:
total += item
if total < 100:
Cumsum.append(np.nan)
else:
Cumsum.append(total)
total = 0
df['Cumsum'] = Cumsum
输出:
Money Cumsum
Year Month
2017 01 24 NaN
02 84 108.0
06 36 NaN
2018 04 25 NaN
05 65 126.0
08 76 NaN
关于python - 用于 cumsum 的 Groupby 函数并重置其索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54230372/
我是一名优秀的程序员,十分优秀!