Python 使用Pandas删除同一日期某个时差的连续重复项

Python 使用Pandas删除同一日期某个时差的连续重复项,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,该表包含在特定时间登录的人员的姓名。如果某个人在30分钟内再次登录,我只想为他们保留一份该行的副本。30分钟内可以有2个以上的条目。预期结果如下 Jay在30分钟内再次登录,因此他只有一个条目。而Ben在30分钟后再次登录,因此仍有2个条目。删除名称的哪一行并不重要 |name |date |time | |Jay |02/10/2020 |12:00:10| |Jay |02/10/2020 |12:23:50| |Ben |02/12/2020 |11:00

该表包含在特定时间登录的人员的姓名。如果某个人在30分钟内再次登录,我只想为他们保留一份该行的副本。30分钟内可以有2个以上的条目。预期结果如下

Jay在30分钟内再次登录,因此他只有一个条目。而Ben在30分钟后再次登录,因此仍有2个条目。删除名称的哪一行并不重要

|name  |date       |time    | 
|Jay   |02/10/2020 |12:00:10|
|Jay   |02/10/2020 |12:23:50|
|Ben   |02/12/2020 |11:00:20|
|Ben   |02/12/2020 |11:40:30|
|Sky   |16/12/2020 |15:20:10|
我尝试将日期和时间分组为一个日期时间,然后尝试查找时差,但没有帮助。我也尝试过使用shift(),但不知道如果在30分钟内出现多个条目,这将如何实现。

您可以使用:

您可以使用:

|name  |date       |time    | 
|Jay   |02/10/2020 |12:00:10|
|Ben   |02/12/2020 |11:00:20|
|Ben   |02/12/2020 |11:40:30|
|Sky   |16/12/2020 |15:20:10|
In [4586]: df['new'] = df.groupby(['name', 'date'])['time'].shift()
In [4590]: df['time_diff'] = (pd.to_timedelta(df['time'].astype(str)) - pd.to_timedelta(df['new'].astype(str))).dt.total_seconds().div(60).abs()

In [4596]: df = df[df.time_diff.gt(30) | df.time_diff.isna()][['name', 'date', 'time']]

In [4597]: df
Out[4597]: 
  name        date      time
0  Jay  02/10/2020  12:00:10
2  Ben  02/12/2020  11:00:20
3  Ben  02/12/2020  11:40:30
4  Sky  16/12/2020  15:20:10