如何对带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
相关产品推荐
相关产品推荐

