【发布时间】:2020-08-20 05:53:56
【问题描述】:
已经有一些关于这个主题的问题(比如 Pandas:基于另一列的值的一列的累积总和)但是,它们都没有完全满足我的要求。 假设我有一个像这样的数据框:
id flag
a 1
a 1
a 0
a 0
a 1
b 0
b 0
b 1
b 1
b 1
b 1
c 0
c 1
c 1
c 0
c 1
我想按 id 计算标志分组的累积总和,但要避免标志为 0 的总和,并且 cumsum 再次重置为 0。我尝试在np.where 中使用shift()、groupby(id)['flag']cumsum() 进行总结,但没有运气。期望的输出应该是:
id flag cum_flag
a 1 1
a 1 2
a 0 0
a 0 0
a 1 1
b 0 0
b 0 0
b 1 1
b 1 2
b 1 3
b 1 4
c 0 0
c 1 1
c 1 2
c 0 0
c 1 1
生成数据帧的 DDL:
df = pd.DataFrame({'id': [a, a, a, a, a, b, b, b, b, b, b, c, c, c, c, c],
'flag': [1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1]})
感谢您的帮助!
【问题讨论】: