Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在集合中放置重复项_Python_Pandas - Fatal编程技术网

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'))似乎很有效。