2013-02-06 17 views
47

Mam zestaw danych z kolumnami z wieloma indeksami w panda df, które chciałbym sortować według wartości w określonej kolumnie. Próbowałem używać sortindex i poziom sortowania, ale nie były w stanie uzyskać wyników, których szukam. Mój zestaw danych wygląda następująco:Multi Index Sortowanie w Pandach

Group1 Group2 
    A B C  A B C 
1 1 0 3  2 5 7 
2 5 6 9  1 0 0 
3 7 0 2  0 3 5 

Chcę uporządkować wszystkie dane i indeks według kolumny C w grupie 1 w kolejności malejącej, więc moje wyniki wyglądają następująco:

Group1 Group2 
    A B C  A B C 
2 5 6 9  1 0 0 
1 1 0 3  2 5 7 
3 7 0 2  0 3 5 

Czy to możliwe, aby zrobić ten rodzaj ze strukturą, w której znajdują się moje dane, czy powinienem zamienić Grupę1 na stronę indeksu?

Odpowiedz

64

Przy sortowaniu przez MultiIndex trzeba zawierać krotki opisujące kolumnę wewnątrz listy *:

In [11]: df.sort([('Group1', 'C')], ascending=False) 
Out[11]: 
    Group1  Group2  
     A B C  A B C 
2  5 6 9  1 0 0 
1  1 0 3  2 5 7 
3  7 0 2  0 3 5 

* tak aby nie mylić pandy do myślenia chcesz posortować najpierw Group1 następnie przez C

+0

Dzięki, dokładnie to, czego szukałem. – MattB

+0

Hmmph. Szybciej niż ja i lepsze rozwiązanie do startu. – DSM

+0

@ DS [Co mogę powiedzieć] (http://en.wikipedia.org/wiki/The_Typing_of_the_Dead)? : D –