Pandas:对列求和,直到满足其他列的条件



我需要对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列。

你做对了,试试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

最新更新