如何按一列分组并对另一列的值进行排序?
Posted
技术标签:
【中文标题】如何按一列分组并对另一列的值进行排序?【英文标题】:How to group by one column and sort the values of another column? 【发布时间】:2017-04-01 15:47:30 【问题描述】:这是我的数据框
import pandas as pd
df = pd.DataFrame('A': ['one', 'one', 'two', 'two', 'one'] ,
'B': ['Ar', 'Br', 'Cr', 'Ar','Ar'] ,
'C': ['12/15/2011', '11/11/2001', '08/30/2015', '07/3/1999','03/03/2000' ],
'D':[1,7,3,4,5])
我的目标是按A
列分组,并按B
列对分组结果进行排序。
这是我想出的:
sort_group = df.sort_values('B').groupby('A')
我希望分组操作不会扭曲顺序,但它不起作用并且返回的不是数据框,而是 groupby
对象
<pandas.core.groupby.DataFrameGroupBy object at 0x0000000008B190B8>
有什么建议吗?
【问题讨论】:
pandas groupby sort within groups的可能重复 【参考方案1】:您不能将sort_values
直接应用于groupby
对象,但您需要apply
:
df.groupby('A').apply(lambda x: x.sort_values('B'))
为您提供所需的输出:
A B C D
A
one 0 one Ar 12/15/2011 1
4 one Ar 03/03/2000 5
1 one Br 11/11/2001 7
two 3 two Ar 07/3/1999 4
2 two Cr 08/30/2015 3
【讨论】:
以上是关于如何按一列分组并对另一列的值进行排序?的主要内容,如果未能解决你的问题,请参考以下文章