将sort应用于pandas groupby操作

use*_*827 6 python pandas

如何对pandas groupby操作应用排序?下面的命令返回一个错误,指出'bool'对象不可调用

import pandas as pd

df.groupby('cokey').sort('A')

cokey       A   B
11168155    18  56
11168155    0   18
11168155    56  96
11168156    96  152
11168156    0   96
Run Code Online (Sandbox Code Playgroud)

EdC*_*ica 15

通常排序是在groupby键上执行的,当你发现你不能调用sortgroupby对象时,你可以做的是调用apply并传递DataFrame.sort函数并将列作为kwarg参数传递:

In [58]:

df.groupby('cokey').apply(pd.DataFrame.sort, 'A')
Out[58]:
               cokey   A    B
cokey                        
11168155 1  11168155   0   18
         0  11168155  18   56
         2  11168155  56   96
         3  11168155  96  152
Run Code Online (Sandbox Code Playgroud)

或者,您可以在分组之前对df进行排序:

df.sort('A').groupby('cokey')
Run Code Online (Sandbox Code Playgroud)

更新

对于版本0.17.0及以上版本DataFrame.sort现已弃用,请参阅文档,现在应该使用DataFrame.sort_values:

df.groupby('cokey').apply(pd.DataFrame.sort_values, 'A')
Run Code Online (Sandbox Code Playgroud)

  • @user1700890 不在我的开发机器上,所以不确定尝试`df.groupby('cokey').apply(pd.DataFrame.sort_values, ('A', Ascending=True))` (2认同)