Python 如何在大熊猫身上用重置进行累积条纹
我有以下数据帧:Python 如何在大熊猫身上用重置进行累积条纹,python,pandas,pandas-groupby,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中有零,这个和就应该重置。我应该返回如下内容: 我尝试了以下方法:
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中有零,这个和就应该重置。我应该返回如下内容:
我尝试了以下方法:
df['cum'] = df.groupby([df.col1, df.col2]).col3.cumsum()
但是,它没有正确重置。它会重置,但会继续对后续行进行求和 在这里拍摄
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
。@pandachii很高兴我能帮忙;)我意识到了一个错误,如果我想在col2中的第一个实例1之后启动cumsum。代码将如何更改?新的预期产量将为0,0.5,0.8,0,0,0.1,0.5,0,0,0,0,3,0,0,0,0,0@pandachii这是哪个输入的预期输出?来自post的原始输入