Python 在集合中放置重复项
我正在一个数据框架中观察一组临时员工。我正在使用熊猫,我需要在每个人的集合中放置副本。因此,对于格林来说,我只希望从Python 在集合中放置重复项,python,pandas,Python,Pandas,我正在一个数据框架中观察一组临时员工。我正在使用熊猫,我需要在每个人的集合中放置副本。因此,对于格林来说,我只希望从apnt\u ymd列中选择一个唯一的日期。集合中有两个2012-04-08日期,我只需要一个 在过去,我得到了类似的帮助,通过使用以下代码查看数据集中的最小(和最大,使用idxmax)日期: first_apt = df.loc[df.groupby('ssno')['apnt_ymd'].idxmin()] 我需要类似的东西,将删除数据集中的所有重复日期 如何使用drop_d
apnt\u ymd
列中选择一个唯一的日期。集合中有两个2012-04-08
日期,我只需要一个
在过去,我得到了类似的帮助,通过使用以下代码查看数据集中的最小(和最大,使用idxmax)日期:
first_apt = df.loc[df.groupby('ssno')['apnt_ymd'].idxmin()]
我需要类似的东西,将删除数据集中的所有重复日期
如何使用drop_duplicates
方法删除每组记录的所有重复日期?还是有其他的方法,比如申请
ssno nm_emp_lst nm_emp_fst apnt_ymd
299769 123456789 GREENE ALTON 2014-05-04
192323 123456789 GREENE ALTON 2013-04-07
192324 123456789 GREENE ALTON 2012-04-08
192324 123456789 GREENE ALTON 2012-04-08
102872 123456789 GREENE ALTON 2011-04-10
175701 987654321 DUBE JEFF 2013-04-21
177583 777888999 IRVING SARA 2013-05-13
4785 777888999 IRVING SARA 2012-05-16
222300 444444444 LEMERE GEORGE 2013-04-14
24386 444444444 LEMERE GEORGE 2012-03-25
24434 444444444 LEMERE GEORGE 2011-05-08
如果我理解正确,则可以在dataframe上使用,传递要检查重复项的列列表:
In [31]:
df.drop_duplicates(['nm_emp_lst','apnt_ymd'])
Out[31]:
id ssno nm_emp_lst nm_emp_fst apnt_ymd
0 299769 123456789 GREENE ALTON 2014-05-04
1 192323 123456789 GREENE ALTON 2013-04-07
2 192324 123456789 GREENE ALTON 2012-04-08
4 102872 123456789 GREENE ALTON 2011-04-10
5 175701 987654321 DUBE JEFF 2013-04-21
6 177583 777888999 IRVING SARA 2013-05-13
7 4785 777888999 IRVING SARA 2012-05-16
8 222300 444444444 LEMERE GEORGE 2013-04-14
9 24386 444444444 LEMERE GEORGE 2012-03-25
10 24434 444444444 LEMERE GEORGE 2011-05-08
编辑
根据我们的私人聊天,以下是您想要的:
In [89]:
df.drop_duplicates(['ssno','apnt_ymd'])
Out[89]:
id ssno nm_emp_lst nm_emp_fst apnt_ymd
0 299769 123456789 GREENE ALTON 2014-05-04
1 192323 123456789 GREENE ALTON 2013-04-07
2 192324 123456789 GREENE ALTON 2012-04-08
4 102872 123456789 GREENE ALTON 2011-04-10
5 175701 987654321 DUBE JEFF 2013-04-21
6 177583 777888999 IRVING SARA 2013-05-13
7 4785 777888999 IRVING SARA 2012-05-16
8 222300 444444444 LEMERE GEORGE 2013-04-14
9 24386 444444444 LEMERE GEORGE 2012-03-25
10 24434 444444444 LEMERE GEORGE 2011-05-08
这是否符合您的要求:
df.drop\u duplicates(['nm\u emp\u lst','apnt\u ymd'])
?我认为这是可行的。我将导出并验证我的数据。。这是我从你上面的代码中使用的代码:research.loc[research.apnt_ymd.drop_duplicates(take_last=False).index].sort('ssno')[:10]你能检查一下我的答案吗?我的第一条评论没有正确阅读你的要求,我想我的答案应该能解决你的问题,谢谢。我正在看的专栏是招聘日期。他们可以在一年内被雇佣多次,也可以是季节性的,但不能在同一天雇佣。我最初遇到的问题是,我有十年的数据。当我为一列使用“删除重复项”时,它会删除所有重复项,因此如果某个人的雇用日期与另一个人的雇用日期相同,它会删除该人的雇用日期。代码不起作用。我已经编辑了我最初的问题,试图让它更清楚。谢谢EdChum,是的。drop_duplicates(['ssno','apnt_ymd'))似乎很有效。