如何在熊猫中累积连胜

时间:2018-08-19 03:20:24

标签: python pandas pandas-groupby

我有以下数据框:

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()

但是,它没有正确重置。它会重置,但会继续累加随后的行。

1 个答案:

答案 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)

说明:

只要col20,只需设置0。否则,只需设置分组值的cumsum