gpt4 book ai didi

python-3.x - 在条件下删除重复

转载 作者:行者123 更新时间:2023-12-01 03:00:16 25 4
gpt4 key购买 nike

我有一个包含以下日期信息的数据框,我想删除代码 + currentdate 中的重复项,条件如下:
1) 如果['code','currentdate']中有重复,保留小于或当前日期的最新开始日期;
2) 如果['code','currentdate']中没有重复,保留原来的日期。
谢谢!

>  code        currentdate       startdate            category 
> a 2018-04-01 2015-04-28 category_z
> a 2018-04-01 2015-08-28 category_x
> a 2018-04-01 2018-04-17 category_y
> a 2018-05-01 2015-04-28 category_z
> a 2018-05-01 2015-08-28 category_x
> a 2018-05-01 2018-04-17 category_y
> b 2018-04-01 2018-08-28 category_x
> b 2018-05-01 2018-08-28 category_x
> c 2018-04-01 2018-03-17 category_x
> c 2018-04-01 2018-04-28 category_y
> c 2018-05-01 2018-03-17 category_x
> c 2018-05-01 2018-04-28 category_y

预期输出将是:

>  code        currentdate       startdate            category      
> a 2018-04-01 2015-08-28 category_x
> a 2018-05-01 2018-04-17 category_y
> b 2018-04-01 2018-08-28 category_x
> b 2018-05-01 2018-08-28 category_x
> c 2018-04-01 2018-03-17 category_x
> c 2018-05-01 2018-04-28 category_y

最佳答案

用:

m=df.duplicated(['code','currentdate'],keep=False)
n=(df[m].sort_values(['code','startdate'],ascending=[True,False])
.query("startdate<currentdate").drop_duplicates(['code','currentdate']))
pd.concat([df[~m],n]).sort_index()
  code currentdate  startdate    category
0 a 2018-04-01 2015-08-28 category_x
3 a 2018-05-01 2018-04-17 category_y
4 b 2018-04-01 2018-08-28 category_x
5 b 2018-05-01 2018-08-28 category_x
6 c 2018-04-01 2018-03-17 category_x
9 c 2018-05-01 2018-04-28 category_y

关于python-3.x - 在条件下删除重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57234480/

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