合并时间重叠的行 - 熊猫



据说,我有如下所示的数据帧。

    Date    Time_Start  Time_End    Reason
0   2018-08-05  2018-08-05 10:10:00     2018-08-05 13:35:00     blah1
1   2018-08-05  2018-08-05 12:50:00     2018-08-05 14:26:00     blah2
2   2018-08-05  2018-08-05 16:40:00     2018-08-05 17:30:00     blah3
3   2018-08-05  2018-08-05 17:00:00     2018-08-05 17:10:00     blah4
4   2018-08-06  2018-08-06 09:40:00     2018-08-06 11:23:00     blah5

我想知道熊猫是否能够合并时间重叠的行,例如获取第一行的"Time_Start"并与第二行的"Time_End"合并并将原因附加到列表中。另一种情况是删除第四行,因为它是第三行的子时间窗口,并将原因附加到列表中。所以,我的预期输出如下所示

    Date    Time_Start  Time_End    Reason
0   2018-08-05  2018-08-05 10:10:00     2018-08-05 14:26:00     [blah1, blah2]
1   2018-08-05  2018-08-05 16:40:00     2018-08-05 17:30:00     [blah3, blah4]
3   2018-08-06  2018-08-06 09:40:00     2018-08-06 11:23:00     [blah5] 

请注意,可以有两行以上的数据具有时间重叠。

您可以在此处创建帮助密钥

df['newid']=(df['Time_Start']-df['Time_End'].shift()).dt.total_seconds().gt(0).cumsum()
newdf=df.groupby(['Date','newid']).agg({'Time_Start':'min','Time_End':'max','Reason':lambda x : [x.values.tolist()]}).reset_index(level=1)
newdf.assign(Reason=newdf.Reason.str[0])
Out[592]: 
            newid          Time_Start          Reason            Time_End
Date                                                                     
2018-08-05      0 2018-08-05 10:10:00  [blah1, blah2] 2018-08-05 14:26:00
2018-08-05      1 2018-08-05 16:40:00  [blah3, blah4] 2018-08-05 17:30:00
2018-08-06      2 2018-08-06 09:40:00         [blah5] 2018-08-06 11:23:00

最新更新