我有一个如下的datframe:
df
i j t_start_date_x t_end_date_x t_start_date_y t_end_date_y
20149 491 191 2020-03-20 12:44:03 2020-03-20 16:03:57 2020-03-20 10:40:47 2020-03-20 17:12:14
20150 504 505 2020-03-20 12:54:14 2020-03-20 16:20:48 2020-03-20 16:39:59 2020-03-20 22:59:14
20151 505 504 2020-03-20 16:39:59 2020-03-20 22:59:14 2020-03-20 12:54:14 2020-03-20 16:20:48
20152 506 282 2020-03-20 10:39:35 2020-03-20 16:31:48 2020-03-20 15:24:32 2020-03-20 15:34:34
20153 515 494 2020-03-20 12:56:40 2020-03-20 18:58:15 2020-03-20 09:55:16 2020-03-20 15:31:22
我只想保留时间重叠的行
i j t_start_date_x t_end_date_x t_start_date_y t_end_date_y
20149 491 191 2020-03-20 12:44:03 2020-03-20 16:03:57 2020-03-20 10:40:47 2020-03-20 17:12:14
20152 506 282 2020-03-20 10:39:35 2020-03-20 16:31:48 2020-03-20 15:24:32 2020-03-20 15:34:34
20153 515 494 2020-03-20 12:56:40 2020-03-20 18:58:15 2020-03-20 09:55:16 2020-03-20 15:31:22
答案 0 :(得分:1)
您可以通过检查't_start_date_x'是否在't_end_date_y'之前以及是否将x和y进行相同的反转来做到这一点:
mask_overlap = ((df['t_start_date_x']<=df['t_end_date_y'])
& (df['t_start_date_y']<=df['t_end_date_x']))
df_overlap = df[mask_overlap]