2016-11-17 128 views
1

这里是我的数据框如何按一列进行分组并对另一列的值进行排序?

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> 

有什么建议吗?

回答

4

你不能直接适用sort_valuesgroupby对象,但你需要一个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