在Pandas数据帧中查找重叠的行



转换以下升序数据帧的最简单方法是什么:

start   end
0   100 500
1   400 700
2   450 580
3   750 910
4   920 940
5   1000    1200
6   1100    1300

进入

start   end
0   100 700
1   750 910
2   920 940
3   1000    1300

您可能会注意到,第0:3行和第5:7行被合并,因为这些行重叠,或者一行是另一行的子部分:实际上,它们只有一个开始结束

使用带有shift的自定义组来识别重叠的间隔,并保留第一个开始和最后一个结束(如果您愿意,也可以是min/max(:

group = df['start'].gt(df['end'].shift()).cumsum()
out = df.groupby(group).agg({'start': 'first', 'end': 'last'})

输出:

start   end
0    100   580
1    750   910
2    920   940
3   1000  1300

中间体group:

0    0
1    0
2    0
3    1
4    2
5    3
6    3
dtype: int64

最新更新