Python 根据两列值合并和删除行

Python 根据两列值合并和删除行,python,pandas,Python,Pandas,我有一个包含时间和位置的数据框,我希望合并具有相同日期和位置的行,以便最大时间将移到“to”列,并且我刚才使用其时间值的行将被删除 此外,如果时差大于3小时,则不会发生合并 date from location to 01 16:25 A 02 17:15 B 02 19:11 C 02 19:19 C 02 17:48 B 03 16

我有一个包含时间和位置的数据框,我希望合并具有相同日期和位置的行,以便最大时间将移到“to”列,并且我刚才使用其时间值的行将被删除

此外,如果时差大于3小时,则不会发生合并

date    from    location    to
    01  16:25       A   
    02  17:15       B   
    02  19:11       C   
    02  19:19       C
    02  17:48       B   
    03  16:20       F   
    05  08:30       G   
    05  09:09       D   
    05  09:11       G   
预期产出:

date    from    location    to
    01  16:25       A       16:25
    02  17:15       B       17:48   
    02  19:11       C       19:19
    02  19:19       C      #this line will delete
    02  17:48       B      #this line will delete
    03  16:20       F       16:20   
    05  08:30       G       08:30   
    05  09:09       D       09:09
    05  09:11       G       09:11
我尝试了双for循环,但我确信有更好的python方法。 有什么想法吗?

#示例数据帧
df=pd.DataFrame(
{
“日期”:[“01”、“01”、“01”、“01”、“02”、“02”],
“时间”:[“01:02”、“02:03”、“04:05”、“06:07”、“08:09”、“12:10”],
“地点”:[“A”、“A”、“B”、“B”、“C”、“C”],
}
)
#将时间列转换为日期时间
df[“time”]=pd.to_datetime(df[“time”],format=“%H:%M”)
#按日期和地点汇总
df=df.groupby([“日期”,“位置]).agg([“最小”,“最大]).reset_index()
#重命名列
df.columns=[“日期”、“位置”、“收件人”、“发件人”]
#找出差异>3的地方

df=df[(df['to']-df['from']).astype('timedelta64[h]').abs()为什么第一个
G
位置行的
to
值是
8:30
?因为下一个位置不同所以第二个
B
位置行被删除了?您的输出没有意义。首先是@AlexandreB的问题。第二个问题是
C
的第1行为什么不是
19:19
?这是在“第二个
B
是这一天的下一个时间戳”组中,按照此逻辑,为什么要对两个
G
行进行区分?它们也是同一天解决方案不考虑“3小时约束”如果你愿意,你可以在合并后过滤掉差异。我会编辑我的答案。我会更新它。一定是错过了你之前关于3小时限制的说明。
date location        to      from
0   01        A  01:02:00  02:03:00
1   01        B  04:05:00  06:07:00