如何用Python按ID组检测服务时间区间是否存在重叠
按员工ID分组检测服务时间区间重叠并计算Overlap列
我需要按ID(员工标识)分组,检测同一员工的两项服务的时间区间(Begin_Time至End_Time)是否存在任意时长的重叠,并计算出Overlap列。
示例结果表格
| ID | Begin Time | End Time | Overlap |
|---|---|---|---|
| 1 | 1/1/2023 13:30 | 1/1/2023 13:55 | False |
| 1 | 1/7/2023 12:30 | 1/1/2023 13:45 | False |
| 2 | 1/3/2023 15:30 | 1/3/2023 16:30 | True |
| 1 | 1/5/2023 07:30 | 1/5/2023 08:30 | True |
| 2 | 1/3/2023 14:55 | 1/3/2023 15:55 | True |
| 1 | 1/5/2023 06:30 | 1/5/2023 09:30 | True |
| 1 | 1/7/2023 06:30 | 1/7/2023 09:30 | True |
| 1 | 1/7/2023 06:00 | 1/7/2023 06:45 | True |
生成DataFrame的代码
id_list = [1,1,2,1,2,1,1,1] begin_time = ['1/1/2023 13:30', '1/7/2023 12:30', '1/3/2023 15:30', '1/5/2023 07:30', '1/3/2023 14:55', '1/5/2023 06:30', '1/7/2023 06:30', '1/7/2023 06:00'] end_time = ['1/1/2023 13:55', '1/1/2023 13:45', '1/3/2023 16:30', '1/5/2023 08:30', '1/3/2023 15:55', '1/5/2023 09:30', '1/7/2023 09:30', '1/7/2023 06:45'] df = pd.DataFrame(list(zip(id_list, begin_time, end_time)), columns = ['ID', 'Begin_Time', 'End_Time']) df['Begin_Time'] = pd.to_datetime(df['Begin_Time']) df['End_Time'] = pd.to_datetime(df['End_Time']) df
内容的提问来源于stack exchange,提问作者brandooo23
相关产品推荐
相关产品推荐

