Pandas dataframe - running sum with reset

心不动则不痛 提交于 2019-11-29 03:12:44

You can use 2 times cumsum():

#   reset  val  desired_col
#0      0    1            1
#1      0    5            6
#2      0    4           10
#3      1    2            2
#4      1   -1           -1
#5      0    6            5
#6      0    4            9
#7      1    2            2
df['cumsum'] = df['reset'].cumsum()
#cumulative sums of groups to column des
df['des']= df.groupby(['cumsum'])['val'].cumsum()
print df
#   reset  val  desired_col  cumsum  des
#0      0    1            1       0    1
#1      0    5            6       0    6
#2      0    4           10       0   10
#3      1    2            2       1    2
#4      1   -1           -1       2   -1
#5      0    6            5       2    5
#6      0    4            9       2    9
#7      1    2            2       3    2
#remove columns desired_col and cumsum
df = df.drop(['desired_col', 'cumsum'], axis=1)
print df
#   reset  val  des
#0      0    1    1
#1      0    5    6
#2      0    4   10
#3      1    2    2
#4      1   -1   -1
#5      0    6    5
#6      0    4    9
#7      1    2    2
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!