簡體   English   中英

Pandas:從頭到尾的累計

[英]Pandas: Cumulative Sum From Start to End

我有一個帶有開始和結束位置的 dataframe。 我想壓縮行,其中end_n接近start_n+1並添加相應的值。 最后,我想要累積總和以及該總和的起始值和結束值。

示例 indata,允許從end_nstart_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM