如何使用Python Pandas实现Excel多级排序功能
Pandas实现可选层级多级排序的方案
Pandas原生的sort_values()方法已经完全覆盖Excel的多级排序逻辑,不需要额外依赖第三方库,按下面的方式调用即可:
核心实现逻辑
排序优先级完全由传入by参数的列名列表顺序决定:列表第一个元素是最高优先级排序键(对应需求里的A列),第一个列取值相同的记录会自动按第二个列(B列)排序,后续依次顺延,和Excel里添加排序层级的规则完全一致。
基础用法示例
import pandas as pd # 示例:优先按A列升序,A列相同按B列降序,B列相同再按C列升序 sorted_df = df.sort_values( by=["A列", "B列", "C列"], # 按排序优先级从高到低写列名 ascending=[True, False, True], # 为每一列单独指定排序方向:True=升序,False=降序 na_position="last", # 空值统一放在结果末尾,对齐Excel默认排序规则 ignore_index=True # 可选:排序后重置连续行索引,避免原索引乱序 )
特殊场景适配
如果某一列需要按自定义顺序排序(比如等级列按「高/中/低」而非默认字典序排列),可以先将列转为指定顺序的分类类型,再执行排序即可:
# 先指定列的自定义排序顺序 df["等级列"] = pd.Categorical( df["等级列"], categories=["高", "中", "低"], ordered=True ) # 再执行常规多级排序,该列就会按自定义顺序排列 sorted_df = df.sort_values(by=["等级列", "其他排序列"])

内容的提问来源于stack exchange,提问作者Razeen Basunia
相关产品推荐
相关产品推荐

