当达到某些值时,Dataframe 删除重复项

6 python dataframe pandas

我有一个包含重复项的数据框。我想删除这些重复项。我还从 pandas 找到了这个功能df.drop_duplicates(subset=['Action', 'Name'])。可惜这个功能去掉太多了,因为只有时间小于等于5分钟才应该去掉。

我怎样才能做到这一点以及如何打印被丢弃的行数?我会很高兴得到帮助。

  • 你怎么能识别重复项?如果列(操作、名称)相同且时间差小于或等于 5 分钟。

时间格式是01.10.2019, 9:56:52日期和时间用逗号分隔

import pandas as pd
d = {'Time': ['01.10.2019, 9:56:52', '01.10.2019, 9:57:15', '02.10.2019 12:56:12', '02.10.2019 13:02:58', '02.10.2019 13:11:58']
     ,'Action': ['Opened', 'Opened', 'Closed', 'Opened', 'Opened']
     ,'Name': ['Max', 'Max', 'Susan', 'Michael', 'Michael']}
df = pd.DataFrame(data=d)
display(df.head())
Run Code Online (Sandbox Code Playgroud)

输出

在此处输入图片说明

期望输出

在此处输入图片说明

细节

在此处输入图片说明

Hen*_*Yik 2

groupIIUC 您可以通过获取时间差来创建一个数字,然后groupbyfirst

print (df.assign(group=pd.to_datetime(df["Time"]).diff().dt.seconds.gt(300).cumsum())
         .groupby(["group", "Action", "Name"]).first())

                      Time  Action     Name
group                                      
0      01.10.2019, 9:56:52  Opened      Max
1      02.10.2019 12:56:12  Closed    Susan
2      02.10.2019 13:02:58  Opened  Michael
3      02.10.2019 13:11:58  Opened  Michael
Run Code Online (Sandbox Code Playgroud)