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

如何对DataFrame的Group列进行非字典序自定义排序?

自定义DataFrame字符串列的排序规则

原始DataFrame数据:

GroupValue
SAx
Xx
SAAx
SBx

使用默认的df.sort_values('Group')排序后得到:

GroupValue
SAx
SAAx
SBx
Xx

但期望的排序结果是:

GroupValue
SAx
SBx
SAAx
Xx

解决方案

利用sort_values的key参数自定义排序规则,构造包含优先级的元组作为排序依据:

import pandas as pd

# 构造原始DataFrame
data = {'Group': ['SA', 'X', 'SAA', 'SB'], 'Value': ['x', 'x', 'x', 'x']}
df = pd.DataFrame(data)

# 自定义排序
df_sorted = df.sort_values(
    by='Group',
    key=lambda col: col.apply(lambda x: (0 if x.startswith('S') else 1, len(x), x))
)

print(df_sorted)

规则说明

排序元组的三个元素依次对应优先级:

  1. 是否以S开头:S开头的标记为0,非S开头标记为1,确保S开头的条目全部排在前面;
  2. 字符串长度:长度更短的条目优先,所以长度为2的SA、SB排在长度为3的SAA之前;
  3. 字符串本身:长度相同的S开头条目按字母顺序排序,保证SA在SB前面。

输出结果完全符合期望的排序顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:15:25