我正在查看数据框中的一组临时员工。我正在使用熊猫,我需要得到第一个' apnt_ymd'列表中每个人的日期。所以对格林来说,我需要2011-04-10。对于LEMERISE,我需要2011-05-08。
In:name = temphires[['ssno','nm_emp_lst','nm_emp_fst','apnt_ymd']].sort('ssno')
name.drop_duplicates(['apnt_ymd'])
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
102872 123456789 GREENE ALTON 2011-04-10
175701 987654321 DUBE JEFFREY 2013-04-21
177583 777888999 IRVING SARA 2013-05-13
4785 777888999 IRVING SARA 2012-05-16
222300 444444444 LEMERISE GEORGE 2013-04-14
24386 444444444 LEMERISE GEORGE 2012-03-25
24434 444444444 LEMERISE GEORGE 2011-05-08
谢谢
答案 0 :(得分:5)
有几个假设,即您的apnt_ymd
已经是日期或日期时间,如果不是,您可以转换为:
df['apnt_ymd'] = pd.to_datetime(df['apnt_ymd'])
因此,我们可以groupby
nm_emp_list
列,然后计算apnt_ymd
的最低值,并使用idxmin()
返回索引。然后我们可以对原始df使用此索引来显示所需的结果:
In [4]:
df.loc[df.groupby('nm_emp_lst')['apnt_ymd'].idxmin()]
Out[4]:
id ssno nm_emp_lst nm_emp_fst apnt_ymd
4 175701 987654321 DUBE JEFFREY 2013-04-21
3 102872 123456789 GREENE ALTON 2011-04-10
6 84785 126644444 IRVING SARA 2012-05-16
9 24434 777888999 LEMERISE GEORGE 2011-05-08