我在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交换到索引端?
答案 0 :(得分:92)
按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
。