drop_duplicates在一个集合中

时间:2014-10-20 15:38:02

标签: python pandas

我正在查看DataFrame中的一组临时员工。我正在使用Pandas,我需要在每个人的集合中删除重复项。因此,对于Greene,我只想要apnt_ymd列中的一个唯一日期。集合中有两个2012-04-08个日期,我只需要一个。

在过去,我通过使用以下代码在数据集中查看min(以及使用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

1 个答案:

答案 0 :(得分:3)

如果我理解正确,那么您可以在数据框上使用drop_duplicates,传递要检查重复项的列的列表:

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