我正在查看数据框中的一组临时员工.我正在使用熊猫,我需要为列表中的每个人获得第一个’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
谢谢
解决方法:
一些假设,你的apnt_ymd已经是一个日期或日期时间,如果不是你可以转换这样做:
df['apnt_ymd'] = pd.to_datetime(df['apnt_ymd'])
因此我们可以通过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