97

特定の列の値で並べ替えたい 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 をインデックス側にスワップする必要がありますか?

4

1 に答える 1

148

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

*パンダを混乱させないように、最初にGroup1で並べ替え、次にCで並べ替えたいと考えます。


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

于 2013-02-06T16:36:27.460 に答える