Python 2.7 基于最近日期的数据汇总/分组

Python 2.7 基于最近日期的数据汇总/分组,python-2.7,pandas,Python 2.7,Pandas,我有一个如下的数据框,其中Id是字符串,Date是datetime: 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 我想合并该表,只为每个Id显示一行,每个Id都有最近的日期。 有什么想法吗?您可以在Id字段: In [11]: df Out[11]: Id Date 0 1 2012-03-01

我有一个如下的数据框,其中Id是字符串,Date是datetime:

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
我想合并该表,只为每个Id显示一行,每个Id都有最近的日期。
有什么想法吗?

您可以在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')
如果您对订单不确定,您可以采取以下措施:

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
对于每个组,它将获取具有最大(最新)日期的行(argmax部分)

如果您知道它们是有序的,您可以选择最后(或第一个)条目:


(注意:它们不符合顺序,因此在这种情况下不起作用!)

在海登的响应中,我认为使用x.loc代替x.iloc更好,因为df数据帧的索引可能是稀疏的(在这种情况下,iloc将不起作用)


(关于stackoverflow,我没有足够的观点可以在回复的评论中发表。)

他们的日期代表提交的日期,我只需要最新提交的,因为它取代了旧的行。
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