如何对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键上执行的,当你发现你不能调用sort
groupby对象时,你可以做的是调用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)