You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对带MultiIndex的Pandas DataFrame按指定列降序排序?

解决Pandas MultiIndex列按指定列降序排序的问题

直接把目标列的多级索引元组作为sort_values()的by参数即可,同时设置ascending=False实现降序,代码示例如下:

# 按('  Общо', '  всичко')列降序排序
df_sorted = df.sort_values(by=('  Общо', '  всичко'), ascending=False)

关键注意事项:

  • 必须保证元组内的字符串和列索引的内容完全一致,包括开头的空格(你的列索引里' Общо'和' всичко'都带有前导空格,不能省略)
  • 如果不确定列是否存在,可以先验证:
    # 检查目标列是否在DataFrame中
    print(('  Общо', '  всичко') in df.columns)  # 返回True则说明匹配正确
    

完整演示示例

import pandas as pd
import numpy as np

# 构造与你结构一致的MultiIndex列
columns = pd.MultiIndex.from_tuples([
    ('  Общо', '  всичко'),
    ('  Общо', '   мъже'),
    ('  Общо', '    жени'),
    ('В градовете', '  всичко'),
    ('В селата', '   всичко')
], names=['Области', 'Общини'])

# 生成示例数据
df = pd.DataFrame(
    np.random.randint(100, 5000, size=(10, 5)),
    columns=columns,
    index=[f'Област_{i+1}' for i in range(10)]
)

# 执行排序
df_sorted = df.sort_values(by=('  Общо', '  всичко'), ascending=False)
print(df_sorted.head())

内容的提问来源于stack exchange,提问作者GarriX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 08:25:20