繁体   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