Панды: свернуть перекрывающиеся интервалы [начало-конец] и держать меньшие - PullRequest
1 голос
/ 02 октября 2019

У меня есть интервал данных Pandas с интервалами, определенными двумя числовыми координатами: «начало» и «конец».

Я пытаюсь свернуть все перекрывающиеся интервалы и сохранить внутренние координаты.

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

Вывод: тот же кадр данных Pandas со свернутыми интервалами и внутренними координатами. Два интервала перекрываются, если они имеют общую точку, включая закрытые конечные точки. Интервалы, которые имеют только общую открытую конечную точку, не перекрываются.

например, интервалы с индексом строки = [0,1] перекрываются. Я хочу свернуть эти 2 интервала в новый интервал, который имеет 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 Ответ

1 голос
/ 02 октября 2019

это можно сделать как показано ниже

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