python pandas groupby第一次约会

时间:2014-09-23 20:01:44

标签: python numpy pandas

我正在查看数据框中的一组临时员工。我正在使用熊猫,我需要得到第一个' 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

谢谢

1 个答案:

答案 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