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

kr98yfug  于 2022-12-09  发布在  其他
关注(0)|答案(2)|浏览(250)

这是我的数据框

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')

我希望分组操作不会扭曲顺序,但它不起作用,而且返回的不是 Dataframe ,而是groupby对象

<pandas.core.groupby.DataFrameGroupBy object at 0x0000000008B190B8>

有什么建议吗?

4ktjp1zp

4ktjp1zp1#

不能将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
t3irkdon

t3irkdon2#

我通常只使用sort_values来 * 间接地 * 根据 * 列A* 对值进行分组,并在组内按 * 列B* 进行排序。

sort_group = df.sort_values(['A', 'B'])

它会给予你:

A   B          C    D
0   one Ar  12/15/2011  1
4   one Ar  03/03/2000  5
1   one Br  11/11/2001  7
3   two Ar  07/3/1999   4
2   two Cr  08/30/2015  3

这将返回一个正常的DataFrame,您可以在其中继续分析。

相关问题