微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python pandas groupby第一次约会

我正在查看数据框中的一组临时员工.我正在使用熊猫,我需要为列表中的每个人获得第一个’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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐