如何基于已预订约会的列表识别打开的日历槽

时间:2019-10-13 17:34:58

标签: python datetime calendar overlapping

我有一个数据框,用于显示每个人的预定约会的开始和结束时间(请注意,其中一些约会可以相互重叠)。

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]})

任何帮助将不胜感激

0 个答案:

没有答案