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

如何按预设类别顺序对Pandas DataFrame进行重排?

按自定义类别顺序排序DataFrame

首先,用户提供的示例DataFrame生成代码如下:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(15, 3)), columns=list('NMO'))
df['Catgeory1'] = ['I','I','I','I','I','G','G','G','G','G','P','P','I','I','P']
df['Catgeory2'] = ['W','W','C','C','C','W','W','W','W','W','O','O','O','O','O']

需求

按Catgeory1列的自定义顺序排序:P类在前,接着是I类,最后是G类,同时保留所有行的完整特征。

解决方案

推荐用pd.Categorical指定自定义排序规则,高效且适合大规模DataFrame:

  1. 定义目标排序顺序
custom_order = ['P', 'I', 'G']
  1. 将Catgeory1转为带指定顺序的分类类型,再排序
# 方式1:修改原DataFrame列类型后排序
df['Catgeory1'] = pd.Categorical(df['Catgeory1'], categories=custom_order, ordered=True)
sorted_df = df.sort_values('Catgeory1')

# 方式2:不修改原列,临时转换后排序
sorted_df = df.sort_values(
    'Catgeory1',
    key=lambda x: pd.Categorical(x, categories=custom_order, ordered=True)
)

两种方式都会生成符合要求的排序结果,所有行的N、M、O、Catgeory2等特征都会和原行一一对应保留。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:20:41