2015-04-06 31 views
4

如何对熊猫群操作应用排序?下面的命令返回一个错误,指出“布尔”对象不是可调用应用排序到一个熊猫群操作

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 

回答

11

通常,这种排序是在GROUPBY键执行,因为你已经发现了,你不能叫sort一个GROUPBY对象上,是什么你可以做的是叫apply并通过DataFrame.sort功能并通过列作为kwarg PARAM:

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

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 

或者你可以只使用df分组之前排序

更新

0.17.0及以上版本DataFrame.sort现在已经过时,看到docs,一个现在应该使用DataFrame.sort_values

df.groupby('cokey').apply(pd.DataFrame.sort_values, 'A') 
+0

的感谢!有没有办法reset_index()结果数据框? – user308827

+0

随后的操作变得混乱,多级索引仍然存在 – user308827

+1

那么你通过添加这种排序标准来引入另一级索引,你必须在调用'reset_index'后放弃多余的索引恐怕 – EdChum