Python - объединяет перекрывающиеся даты и группы - PullRequest
0 голосов
/ 14 октября 2019

В настоящее время у меня есть фрейм данных, в котором перечислены время начала и окончания для каждой группы.

import pandas as pd

df = pd.DataFrame({'Group': ['Y','Y','Y','Y','Y','Y','Z','Z','Z','Z','Z','Z'],
                   'Begin': ['2019-01-01 00:00','2019-01-01 06:30','2019-01-01 12:30','2019-01-01 17:00','2019-01-02 05:20','2019-01-04 11:00','2019-02-01 09:00','2019-02-01 15:00','2019-02-02 19:00','2019-02-03 06:45','2019-02-04 05:00','2019-02-05 06:02'],
                   'End': ['2019-01-01 08:00','2019-01-01 10:30','2019-01-01 15:00','2019-01-02 05:30','2019-01-04 9:15','2019-01-04 18:00','2019-02-01 13:20','2019-02-02 19:00','2019-02-03 06:00','2019-02-03 11:00','2019-02-06 06:13','2019-02-05 15:08']})

Мне поручено объединить перекрывающиеся даты и время для каждой группы, когда это применимо (поэтому самый ранний из «Начала» и самый поздний из «Конца» в одном наблюдении). Если дата и время не перекрываются, должны быть возвращены время начала и окончания.

Кроме того, я хотел бы найти дату и время окончания предыдущего наблюдения для каждой группы.

Результат, который я ищу, должен быть следующим:

result = pd.DataFrame({'Group': ['Y','Y','Y','Y','Z','Z','Z','Z'],
                    'Begin': ['2019-01-01 00:00','2019-01-01 12:30','2019-01-01 17:00','2019-01-04 11:00','2019-02-01 09:00','2019-02-01 15:00','2019-02-03 06:45','2019-02-04 05:00'],
                    'End': ['2019-01-01 10:30','2019-01-01 15:00','2019-01-04 9:15','2019-01-04 18:00','2019-02-01 13:20','2019-02-03 06:00','2019-02-03 11:00','2019-02-06 06:13'],
                    'Prior Instance': ['','2019-01-01 10:30','2019-01-01 15:00','2019-01-04 9:15','','2019-02-01 13:20','2019-02-03 06:00','2019-02-03 11:00']})
...