我有以下数据框:
df = pd.DataFrame({'col1':['A','A','A','A','A','A','A','B','B','B','B','B','B','B'],'col2':[1,1,1,0,1,1,1,1,0,1,1,0,0,0],'col3':[.5,.5,.3,.2,.1,.4,.7,.4,.5,.3,.2,.4,.5,.6]})
我需要col3的运行总和,但是每当col1更改或col2中为零时,总和应该重置。我应该返回以下内容: mock output
我尝试了以下操作:
df['cum'] = df.groupby([df.col1, df.col2]).col3.cumsum()
但是,它没有正确重置。它会重置,但会继续累加随后的行。
答案 0 :(得分:1)
在这里拍照
zeros = df.col2.eq(0)
vals = df.groupby(['col1', df.col2.ne(df.col2.shift()).cumsum()]).col3.cumsum()
df['id'] = np.where(zeros, 0, vals)
说明:
只要col2
为0
,只需设置0
。否则,只需设置分组值的cumsum
。