2015-04-06 2 views

ответ

11

Обычно сортировка выполняется по клавишам 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 

в качестве альтернативы можно просто отсортировать ФР до группировки:

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

Update

Для версии 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