簡體   English   中英

如何根據 pandas 中的條件組合按時間順序排列的行?

[英]How can I combine chronologically consecutive rows based on a condition in pandas?

我有一個如下所示的數據集:

   begin   end   type
0  1       3     A
1  3       7     A
2  7       9     A
3  9      15     B
4  15     17     B
5  17     20     A

我想對來自相同類型且按時間順序連續的行進行分組,以便生成的 DataFrame 如下所示:

   begin   end   type
0  1       9     A
1  9      17     B
2  17     20     A

當然,我可以編寫一個 function 來檢查每一行並向前查看行,直到找到不同的類型,但我覺得必須有更簡單的方法。 這樣做的最 pandas 方法是什么?

我見過其他類似問題,但沒有一個真正適用於我的情況。

給定您的數據,您可以移動end列並將其與begin進行比較:

groups = df.groupby('type')['end'].shift().ne(df['begin']).cumsum()
(df.groupby(['type', groups])
   .agg({'begin':'first', 'end':'last'})
)

Output:

        begin  end
type              
A    1      1    9
     3     17   20
B    2      9   17

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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