python - Pandas 中的多索引排序

标签 python sorting pandas multi-index

我在 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 交换到索引端?

最佳答案

当按 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 .

关于python - Pandas 中的多索引排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14733871/

相关文章:

python - 使用 0mq (ZeroMQ) 同步两个简单 python3 脚本时出现死锁

python - Pandas - 将列转换为 int 并强制 NaN

python findall 找不到正则表达式

php - 如何根据键可用性将所有输入值分配到数组中而不会发生冲突?

python - 从数据框列表中访问元素的名称

python - 重定向 pip、setuptools 以及与私有(private) PyPI 存储库相关的所有内容

JavaScript:基于预定义的正则表达式顺序进行排序的算法

Java:允许重复的排序列表/集合

python - Pandas 添加一列,其值可以是多个不同的值

python - 将带有子图的 Pandas 图保存到一个文件中