Рассмотрим pandas фрейм данных, например:
df = pd.DataFrame({'id': ['001', '001', '002', '002', '003', '003', '004', '004', '005', '005'],
'start': [1, 200, 200, 1, 1, 200, 200, 1, 1, 1000],
'end': [1000, 500, 500, 1000, 500, 1000, 1000, 500, 500, 2000]})
or
id start end
0 001 1 1000
1 001 200 500
2 002 200 500
3 002 1 1000
4 003 1 500
5 003 200 1000
6 004 200 1000
7 004 1 500
8 005 1 500
9 005 1000 2000
Я хотел бы получить pandas фрейм данных, так что если начало и конец производят перекрытие для строки с данным идентификатором, тогда они совмещены. (Индексы здесь не важны.) Есть ли умный или эффективный способ сделать это, не прибегая к множеству сложных итераций? (Мои фактические данные могут содержать до миллионов строк.)
Конечный результат из приведенного выше примера должен быть:
id start end
001 1 1000
002 1 1000
003 1 1000
004 1 1000
005 1 500
005 1000 2000