Python pandas groupby访问最后一个组
我有一个熊猫数据框,看起来像这样:Python pandas groupby访问最后一个组,python,pandas,grouping,dataframe,Python,Pandas,Grouping,Dataframe,我有一个熊猫数据框,看起来像这样: date info A x A y B z B x C y 我只想知道最后的日期。在这种情况下,它是C 我想我可以通过按Date列进行分组和排序来获得: df.groupby('date', sort=True) 。。。然后访问最后一组。但是,无法将最后一个组作为一个班轮访问?有更好的方法吗?我觉得我把事情复杂化了。 要获得C,这应该足够了:
date info
A x
A y
B z
B x
C y
我只想知道最后的日期。在这种情况下,它是C
我想我可以通过按Date
列进行分组和排序来获得:
df.groupby('date', sort=True)
。。。然后访问最后一组。但是,无法将最后一个组作为一个班轮访问?有更好的方法吗?我觉得我把事情复杂化了。 要获得C,这应该足够了:
df['date'].max()
如果您只想将日期作为一个值,那么您自己的答案就可以了。但是,如果您想获得具有最大日期的实际记录,可以使用: 您还可以使用
升序
参数按其他列排序
In [4]: df.sort(columns=['date', 'info'], ascending=[False, True]).head(1)
Out[4]:
date info
4 C y
您希望最后一行的
tail
按日期排序desc
,因此head
将起作用:)但您是对的,tail
可能更具描述性。我总是在脑子里把任务转换成SQL,而在SQL中只有top n
关键字。@EdChum顺便问一下,你知道在pandas中是否可以进行部分排序吗?例如,在这种情况下,我们不想对整个数据帧进行排序,我们只想取k
最大值。因此,如果我们可以在数据帧上进行部分heapsort,那就太好了。我想,你必须编写自己的代码,sort
确实支持kind='heapsort'
作为一种排序类型,这里有一段类似的代码:这可能会让你找到答案谢谢,也刚刚发现这段代码可能很有用,但至少还需要一些包装器代码-
In [4]: df.sort(columns=['date', 'info'], ascending=[False, True]).head(1)
Out[4]:
date info
4 C y