我有一个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行,因此,我也在寻找一种有效的方法。
谢谢你, 安德里亚
答案 0 :(得分:1)
可以像下面这样
df.groupby(((df.shift()["end"] - df["start"])<0).cumsum()).agg({"start":"min", "end":"max"})