gpt4 book ai didi

python - 如何使用 Python 根据有关日期值的条件删除重复项?

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:50 27 4
gpt4 key购买 nike

我正在尝试删除重复的客户 ID,条件是只有与客户关联的日期在 10 天内彼此相隔才应该删除。唯一应该保留的行是最新日期。

我知道要根据特定列删除重复项,可以使用以下代码:

df.drop_duplicates(subset='Date', keep='last')

但是我不确定如何对其应用更多条件。

这是用于创建数据框的代码:

df = pd.DataFrame([(10012,'2019-01-14'),(10015,'2019-01-16'), 
(10018,'2019-02-25'), (10020,'2019-02-17'),(10012,'2019-01-18'),
(10015,'2019-02-26')],columns =['Customer ID', 'Date']

df['Date'] = pd.to_datetime(df['Date'])

客户 ID 10012 出现两次并且日期相差在 10 天内,因此我希望删除最早日期的行。

客户 ID 10015 也出现了两次,但日期相隔超过 10 天,因此不应删除。

最佳答案

IIUC,你可以试试df.groupby()series.diff() :

df[~df.groupby('Customer ID')['Date'].diff().dt.days.le(10)]

   Customer ID       Date
0 10012 2019-01-14
1 10015 2019-01-16
2 10018 2019-02-25
3 10020 2019-02-17
5 10015 2019-02-26

编辑:

m=(df['Customer ID'].isin(df.loc[df.groupby('Customer ID')['Date'].diff()
.dt.days.le(10),'Customer ID']))
pd.concat([df[~m],df[m].groupby('Customer ID')['Date'].max().reset_index()]).sort_index()

   Customer ID       Date
0 10012 2019-01-18
1 10015 2019-01-16
2 10018 2019-02-25
3 10020 2019-02-17
5 10015 2019-02-26

关于python - 如何使用 Python 根据有关日期值的条件删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56424132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com