我需要对 value
列求和,直到遇到 break
。
df = pd.DataFrame({'value': [1,2,3,4,5,6,7,8], 'break': [0,0,1,0,0,1,0,0]})
value break
0 1 0
1 2 0
2 3 1
3 4 0
4 5 0
5 6 1
6 7 0
7 8 0
预期输出
value break
0 6 1
1 15 1
我想通过一个小组,但我似乎无处可去。我什至不需要最后的 break
列。
答案 0 :(得分:2)
您在正确的轨道上,请尝试使用反向累积和进行 groupby:
(df.groupby(df['break'][::-1].cumsum()[::-1],
as_index=False, sort=False)
.sum()
.query('`break` != 0') # remove this for full data
)
输出:
value break
0 6 1
1 15 1