我有一个DataFrame如下,其中Id是一个字符串,Date是一个日期时间:
Id Date
1 3-1-2012
1 4-8-2013
2 1-17-2013
2 5-4-2013
2 10-30-2012
3 1-3-2013
Run Code Online (Sandbox Code Playgroud)
我想整合表格,为每个具有最新日期的Id显示一行.
有关如何做到这一点的任何想法?
您可以groupby使用Id字段:
In [11]: df
Out[11]:
Id Date
0 1 2012-03-01 00:00:00
1 1 2013-04-08 00:00:00
2 2 2013-01-17 00:00:00
3 2 2013-05-04 00:00:00
4 2 2012-10-30 00:00:00
5 3 2013-01-03 00:00:00
In [12]: g = df.groupby('Id')
Run Code Online (Sandbox Code Playgroud)
如果您不确定订购,您可以采取以下措施:
In [13]: g.agg(lambda x: x.iloc[x.Date.argmax()])
Out[13]:
Date
Id
1 2013-04-08 00:00:00
2 2013-05-04 00:00:00
3 2013-01-03 00:00:00
Run Code Online (Sandbox Code Playgroud)
每个组抓取最大(最新)日期的行(argmax部分).
如果您知道它们是有序的,您可以选择最后一个(或第一个)条目:
In [14]: g.last()
Out[14]:
Date
Id
1 2013-04-08 00:00:00
2 2012-10-30 00:00:00
3 2013-01-03 00:00:00
Run Code Online (Sandbox Code Playgroud)
(注意:它们不是有序的,所以在这种情况下这不起作用!)
| 归档时间: |
|
| 查看次数: |
3551 次 |
| 最近记录: |