熊猫多指数排序

Mat*_*ttB 74 python sorting multi-index 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 
Run Code Online (Sandbox Code Playgroud)

我想按照降序排列组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 
Run Code Online (Sandbox Code Playgroud)

是否可以使用我的数据所在的结构进行此类排序,还是应该将Group1交换到索引端?

And*_*den 110

当按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
Run Code Online (Sandbox Code Playgroud)

*以免混淆大熊猫以为你想先由Group1然后由C排序.


注意:最初使用,.sort因为弃用然后在0.20删除,赞成.sort_values.

  • @KaushikGhose听起来可能是[一个很好的功能请求](https://github.com/pydata/pandas/issues),我想你可以使用loc:`df.loc [('Group1','C') ]` (5认同)
  • 正是我需要的,谢谢。从文档中还不清楚(至少我没有找到它)。同样,仅定义顶层时的错误消息具有误导性:“无法按重复的列X排序”。 (2认同)