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

pandas如何按自定义顺序[1,0,2]根据Labels列值排序DataFrame行

pandas实现DataFrame按指定自定义顺序排序

你可以通过两种常用方法实现Labels列按[1,0,2]的自定义顺序排列,不需要改动原有数据的取值。


方法1:转换为有序分类类型(适合需要长期复用该排序规则的场景)

pandas的分类类型支持自定义类别顺序,设置后调用常规排序方法就会自动按你定义的顺序排列:

import pandas as pd

# 1. 定义你需要的自定义排序顺序
custom_sort_order = [1, 0, 2]
# 2. 将Labels列转换为有序分类,绑定自定义顺序
df1['Labels'] = pd.Categorical(
    df1['Labels'],
    categories=custom_sort_order,
    ordered=True
)
# 3. 常规调用sort_values即可,排序结果自动遵循[1,0,2]的顺序
df2 = df1.sort_values(by='Labels', ascending=True)

如果排序完成后需要把Labels列恢复为普通整数类型(方便后续数值计算),再加一行转换即可:

df2['Labels'] = df2['Labels'].astype(int)

方法2:sort_values传入key映射(适合临时排序、不修改原数据类型的场景)

pandas 1.1.0及以上版本支持给sort_values传入key参数,通过映射把标签值转换为排序权重,不需要修改原列的属性:

# 定义自定义顺序
custom_sort_order = [1, 0, 2]
# 构造映射字典:每个标签对应的排序优先级(索引越小排得越靠前)
order_map = {label: idx for idx, label in enumerate(custom_sort_order)}
# 排序时通过key参数传入映射规则
df2 = df1.sort_values(by='Labels', key=lambda col: col.map(order_map))

效果验证

排序完成后你可以通过df2['Labels'].unique()查看取值顺序,会返回按[1,0,2]排列的结果,同一标签对应的行会连续排列,和常规升/降序排序的行聚合逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:30:53