我有一个包含重复项的数据框。我想删除这些重复项。我也从 Pandas df.drop_duplicates(subset=['Action', 'Name'])
中找到了这个功能.
可惜这个功能去掉太多了,因为只有时间小于等于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())
输出期望输出
细节
最佳答案
您可以使用 cumsum()
关于识别 group 和 groupby 的阈值差异:
groups = (df.groupby(['Action', 'Name'])['Time']
.transform(lambda x: x.diff().gt('5min').cumsum())
)
df.groupby([groups,'Action','Name'], as_index=False).head(1)
输出: Time Action Name
0 2019-01-10 09:56:52 Opened Max
2 2019-02-10 12:56:12 Closed Susan
3 2019-02-10 13:02:58 Opened Michael
关于python - 当达到某些值时,Dataframe 删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64666718/