如何手动对Pandas多级索引DataFrame的索引执行自定义排序
解决方法
你可以通过手动指定月份排序顺序实现需求,两种常用实现方式如下:
方法1:通过reindex直接重排(最简便)
直接按你需要的月份顺序构造列表,调用reindex方法即可:
import pandas as pd # 1. 手动指定你需要的月份顺序 month_order = ['January', 'August', 'September', 'October', 'November', 'December'] # 2. 直接按指定顺序重排DataFrame df_sorted = df.reindex(month_order)
方法2:将索引转为有序分类类型(适合后续需要多次按月份排序的场景
如果后续你还需要对该DataFrame执行多次按月份排序的操作,可以将索引转为带顺序匹配的分类类型:
import pandas as pd month_order = ['January', 'August', 'September', 'October', 'November', 'December'] # 将索引转为有序分类,指定排序规则 df.index = pd.Categorical(df.index, categories=month_order, ordered=True) # 直接按索引排序即可得到目标结果 df_sorted = df.sort_index()
两种方法输出的结果都和你期望的排序结果完全一致。
内容的提问来源于stack exchange,提问作者user14618562
相关产品推荐
相关产品推荐

