web-dev-qa-db-ja.com

マルチインデックスの並べ替えPandas

特定の列の値で並べ替えたいpandas dfのマルチインデックス列を持つデータセットがあります。sortindexとsortlevelを使用しようとしましたが、取得できませんでした私のデータセットは次のようになります。

    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 

結果が次のようになるように、グループ1の列Cですべてのデータとインデックスを降順に並べ替えます。

    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 

私のデータが入っている構造でこのソートを行うことは可能ですか、それともGroup1をインデックス側に交換する必要がありますか?

73
MattB

MultiIndexでソートする場合、リスト内の列を記述するタプルを含める必要があります*:

In [11]: df.sort_values([('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

*混同しないようにpandasまずGroup1でソートし、次にCでソートしたいと考えます。


注:元々使用されていた .sort 廃止されてから0.20で削除されたため、 .sort_values

104
Andy Hayden