如何按一列分组并对另一列的值进行排序?

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

【讨论】:

以上是关于如何按一列分组并对另一列的值进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何按一列的最大值获取SQL行,按另一列分组

Pandas 数据框:按两列分组,然后对另一列进行平均

python如何根据csv中一列的内容对另一列进行写入

按一列分组并在熊猫中找到另一列的总和和最大值

新的滚动平均值列,按一列分组并找到另一列的滚动平均值

我需要连接三个表,将结果按一列分组,并显示另一列的最大值