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

如何使用Python基于DataFrame同表另一列的值对指定列自定义排序

实现方法

你可以通过pandas的有序分类功能实现自定义顺序排序,具体步骤如下:

注意:不要将自定义排序的列表命名为list,这是Python内置关键字,会覆盖原有功能,我们这里重命名为token_order

import pandas as pd

# 定义token列的自定义排序顺序
token_order = ['eng', 'Owx', 'JOC']

# 将token列转为有序分类类型,指定排序规则
df['token'] = pd.Categorical(df['token'], categories=token_order, ordered=True)

# 先按token的自定义顺序排序,再按number列升序排序,同时重置索引
df_sorted = df.sort_values(by=['token', 'number'], ignore_index=True)

参数说明

  • categories=token_order:指定分类的优先级顺序完全匹配你给出的自定义列表,不会触发默认的字母序排序
  • ordered=True:标记该分类为有序类型,排序时会严格按照指定的categories顺序排列
  • ignore_index=True:排序完成后重置行索引,和你给出的示例输出的索引格式保持一致,不需要可以删除该参数

不修改原数据的替代方案

如果你不想改动原DataFrame的token列数据类型,可以用sort_values的key参数实现临时排序:

token_order = ['eng', 'Owx', 'JOC']
df_sorted = df.sort_values(
    by=['token', 'number'],
    key=lambda col: col.map(lambda x: token_order.index(x)) if col.name == 'token' else col,
    ignore_index=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 12:57:01