[英]Pandas: Cumulative Sum From Start to End
我有一个带有开始和结束位置的 dataframe。 我想压缩行,其中end_n
接近start_n+1
并添加相应的值。 最后,我想要累积总和以及该总和的起始值和结束值。
示例 indata,允许从end_n
到start_n+1
的距离 <5:
start end value
1 0 10 3
2 11 15 4
3 17 20 5
4 45 50 3
5 51 60 13
6 100 120 9
期望的结果:
start end value
1 0 10 3
2 11 15 4
3 17 20 5
4 45 50 3
5 51 60 13
6 100 120 9
或者
start end sum
1 0 20 12
4 45 60 16
6 100 120 9
我想 lambda function 会这样做,但原始数据很大,会影响性能。 我更喜欢纯粹的 pandas/numpy 解决方案。
减去移位的值,如果大于5
,则减去组的累积总和,然后按GroupBy.agg
聚合:
g = df['start'].sub(df['end'].shift(fill_value=0)).gt(5).cumsum()
df = df.groupby(g).agg(start=('start', 'first'), end=('end','last'), sum=('value','sum'))
print (df)
start end sum
0 0 20 12
1 45 60 16
2 100 120 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.