2015-02-26 2 views
0

Я хотел бы заказать серию (многоуровневую) в порядке убывания значений (для каждой группы). Например, для следующих серий с двумя уровнями (id, company).сортировка по группам в сериях панд

id   company  
86246  10000  841.90   
      10930090  28.44 
      10948797  52.69  
126082871 1076172070  9.99 
      1076211171  4.99 
      1076317676  7.99 
      1078616272  5.00 

Есть ли способ сортировки (по убыванию) для каждой группы, чтобы я получил следующее:

id   company 
86246  10000  841.90 
      10948797  52.69 
      10930090  28.44 
126082871 1076172070  9.99 
      1076317676  7.99 
      1078616272  5.00 
      1076211171  4.99 

Высокую оценку

ответ

0

Я думаю s.order(ascending=False) может работать, где s переменная проведение серии.

1

Я не уверен, как был создан ваш многоуровневый индексируется DataFrame, но если у вас есть плоский DataFrame df

>>> df 
      id  company value 
0  86246  10000 841.90 
1  86246 10930090 28.44 
2  86246 10948797 52.69 
3 126082871 1076172070 9.99 
4 126082871 1076211171 4.99 
5 126082871 1076317676 7.99 
6 126082871 1078616272 5.00 

вы можете просто отсортировать по столбцу value и создать индекс многоуровневую с использованием set_index()

>>> df.sort_index(by='value', ascending=False).set_index(['id', 'company']) 
         value 
id  company   
86246  10000  841.90 
      10948797  52.69 
      10930090  28.44 
126082871 1076172070 9.99 
      1076317676 7.99 
      1078616272 5.00 
      1076211171 4.99 
Смежные вопросы