熊猫:折叠重叠的间隔[开始-结束],并保持较小的

时间:2019-10-02 08:23:38

标签: python pandas collapse

我有一个Pandas数据框,其间隔由2个数字坐标“开始”和“结束”定义。

我正在尝试折叠所有重叠的间隔,并保留内部坐标。

index start end  
0 10 40  
1 13 34  
2 50 100  
3 44 94  

输出:具有折叠间隔和内部坐标的相同Pandas数据框。如果两个区间共享一个公共点,则两个区间会重叠,包括封闭的端点。只有共同的开放端点的时间间隔不会重叠。

例如行索引= [0,1]的间隔重叠。我想将这两个间隔折叠为一个新间隔,该间隔具有new_start == max([10,13])和new_end == min([40,34])。行索引[0,1]的折叠间隔将为new_start = 13,new_end =34。

index start end  
0 13 34  
1 50 94

数据帧的大小为2M行,因此,我也在寻找一种有效的方法。

谢谢你, 安德里亚

1 个答案:

答案 0 :(得分:1)

可以像下面这样

df.groupby(((df.shift()["end"] - df["start"])<0).cumsum()).agg({"start":"min", "end":"max"})