2013-02-06 15 views
47

Tôi có tập dữ liệu với các cột đa chỉ mục trong một das df mà tôi muốn sắp xếp theo các giá trị trong một cột cụ thể. Tôi đã thử sử dụng sortindex và sortlevel nhưng không thể có được kết quả tôi đang tìm kiếm. bộ dữ liệu của tôi trông giống như:Phân loại nhiều chỉ mục trong Pandas

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 

Tôi muốn sắp xếp tất cả dữ liệu và chỉ số theo cột C trong nhóm 1 theo thứ tự giảm dần vì vậy kết quả của tôi trông giống như:

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 

Có thể làm việc này với cấu trúc dữ liệu của tôi, hoặc tôi có nên hoán đổi Group1 sang bên chỉ mục không?

Trả lời

64

Khi sắp xếp theo một MultiIndex bạn cần phải chứa tuple mô tả các cột bên trong một danh sách *:

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 

* để không nhầm lẫn giữa gấu trúc vào suy nghĩ bạn muốn sắp xếp đầu tiên của Group1 sau đó bởi C .

+0

Cảm ơn, chính xác những gì tôi đang tìm kiếm. – MattB

+0

Hmmph. Nhanh hơn tôi và một giải pháp tốt hơn để khởi động. – DSM

+0

@DSM [Tôi có thể nói gì] (http://en.wikipedia.org/wiki/The_Typing_of_the_Dead)? : D –