【问题标题】:Python: how to select rows based on delta time in a pandas dataframe?Python:如何根据熊猫数据框中的增量时间选择行?
【发布时间】:2020-04-24 13:36:05
【问题描述】:

我有一个如下所示的数据框:

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

【问题讨论】:

    标签: python pandas dataframe timestamp


    【解决方案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]
    

    【讨论】:

    • 我可以添加重叠的时间吗?
    • @emax 可能是 df_overlap['overlap_time'] = df_overlap[['t_end_date_x','t_end_date_y']].min(axis=1)-df_overlap[['t_start_date_x','t_start_date_y']].max(axis=1)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2020-12-08
    • 2015-08-15
    • 2014-05-03
    • 1970-01-01
    相关资源
    最近更新 更多