Как определить открытые слоты календаря на основе списка забронированных встреч - PullRequest
0 голосов
/ 13 октября 2019

У меня есть фрейм данных, который показывает различное время начала и окончания забронированных встреч на человека (обратите внимание, что некоторые из этих встреч могут перекрывать друг друга).

df = pd.DataFrame({'Individual': ['A','A','A','A','A','A','A','A','B','B','B','B','B','B','B'],
                   'Start': ['2019-10-01 00:00','2019-10-01 06:30','2019-10-01 12:30','2019-10-01 16:00','2019-10-02 09:20','2019-10-02 14:00','2019-10-02 20:00','2019-10-03 15:00','2019-10-01 00:00','2019-10-01 09:00','2019-10-01 15:00','2019-10-01 20:00','2019-10-02 11:45','2019-10-02 18:00','2019-10-04 09:02'],
                   'End': ['2019-10-01 08:00','2019-10-01 12:00','2019-10-01 15:00','2019-10-02 07:00','2019-10-02 11:00','2019-10-02 18:00','2019-10-03 10:00','2019-10-04 12:00','2019-10-01 06:15','2019-10-01 13:20','2019-10-01 20:00','2019-10-02 10:00','2019-10-02 15:00','2019-10-04 06:13','2019-10-04 17:10']})

Используя эту информацию, я бы хотелЧтобы определить пару вещей: 1) DateTime, в котором календарь каждого человека становится свободным и 2) Продолжительность (в минутах) каждого блока свободного времени.

Я не совсем уверен, как получитьэто началось. Вначале я думал о том, чтобы объединить перекрывающиеся забронированные встречи, а затем обратиться к своему предшественнику, чтобы определить свободное время. Не уверен, что есть более простой способ сделать это.

Вот ожидаемые результаты:

results = pd.DataFrame({'Individual': ['A','A','A','A','A','A','B','B','B','B','B'],
                    'Free Time Start': ['2019-10-01 12:00','2019-10-01 15:00','2019-10-02 07:00','2019-10-02 11:00','2019-10-02 18:00','2019-10-03 10:00','2019-10-01 06:15','2019-10-01 13:20','2019-10-02 10:00','2019-10-02 15:00','2019-10-04 06:13'],
                    'Duration': [30,60,140,180,120,300,165,100,105,180,169]})

Любая помощь будет наиболее ценной

...