[英]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.