2014-09-23 97 views
4

我正在看一組數據框中的臨時僱員。我正在使用熊貓,我需要爲列表中的每個人獲取第一個「apnt_ymd」日期。所以對於格林,我需要2011-04-10。對於LEMERISE我需要2011-05-08。第一次約會的python pandas groupby

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 

謝謝

回答

5

一對夫婦的假設,你apnt_ymd是一個日期或日期時間已經,如果不是你可以將這樣做:

df['apnt_ymd'] = pd.to_datetime(df['apnt_ymd']) 

所以我們可以groupbynm_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 
+0

是的,就我擦洗列表中,它似乎解決了我的問題。謝謝EdChum! – david 2014-09-23 20:20:33

+0

@ user2201603酷,你現在也可以upvote;) – EdChum 2014-09-23 20:21:18