Python 3.x 根据日期条件删除重复项
我有一个如下所示的数据帧,我想根据某些标准删除重复。 1) 如果startdate大于月,则会将其删除。 2) 如果开始日期少于一个月,则保留最新记录Python 3.x 根据日期条件删除重复项,python-3.x,pandas,Python 3.x,Pandas,我有一个如下所示的数据帧,我想根据某些标准删除重复。 1) 如果startdate大于月,则会将其删除。 2) 如果开始日期少于一个月,则保留最新记录 > COMP Month Startdate bundle result > 0 TD3M 2018-03-01 2015-08-28 01_Essential keep > 1 TD3M 2018-03-01 2018-
> COMP Month Startdate bundle result
> 0 TD3M 2018-03-01 2015-08-28 01_Essential keep
> 1 TD3M 2018-03-01 2018-07-17 04_Complete remove
> 2 TD3M 2018-04-01 2015-08-28 01_Essential keep
> 3 TD3M 2018-04-01 2018-07-17 04_Complete remove
> 4 TD3M 2018-05-01 2015-08-28 01_Essential keep
> 5 TD3M 2018-05-01 2018-07-17 04_Complete remove
> 6 TD3M 2018-06-01 2015-08-28 01_Essential keep
> 7 TD3M 2018-06-01 2018-07-17 04_Complete remove
> 8 TD3M 2018-08-01 2015-08-28 01_Essential remove
> 9 TD3M 2018-08-01 2018-07-17 04_Complete keep
> 10 TD3M 2018-09-01 2015-08-28 01_Essential remove
> 11 TD3M 2018-09-01 2018-07-17 04_Complete keep
预期产出将是:
> COMP Month Startdate bundle
> 0 TD3M 2018-03-01 2015-08-28 01_Essential
> 2 TD3M 2018-04-01 2015-08-28 01_Essential
> 4 TD3M 2018-05-01 2015-08-28 01_Essential
> 6 TD3M 2018-06-01 2015-08-28 01_Essential
> 9 TD3M 2018-08-01 2018-07-17 04_Complete
> 11 TD3M 2018-09-01 2018-07-17 04_Complete
首先,我删除您的“结果”列:
df=df.drop(columns='result')
首先检查月和开始日期字段是否为日期时间格式:
df.Month=pd.to_datetime(df.Month)
df.Startdate=pd.to_datetime(df.Startdate)
然后筛选和分组(按最大值聚合):
df=df[df.Startdate这里有一种使用sort\u值的方法
df.query('Startdate<=Month').sort_values('Startdate').drop_duplicates('Month',keep='last')
Out[892]:
COMP Month Startdate bundle result
0 TD3M 2018-03-01 2015-08-28 01_Essential keep
2 TD3M 2018-04-01 2015-08-28 01_Essential keep
4 TD3M 2018-05-01 2015-08-28 01_Essential keep
6 TD3M 2018-06-01 2015-08-28 01_Essential keep
9 TD3M 2018-08-01 2018-07-17 04_Complete keep
11 TD3M 2018-09-01 2018-07-17 04_Complete keep
df.query(df=df[df['Month']>df['SartDate']]的起始日期可能重复)
您的问题和输出不匹配,请检查