我正在查看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
答案 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