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

使用pd.Categorical重排DataFrame无效?问题排查

问题描述

原始DataFrame如下:

TestWGT
TOTO5
TATA7
TZTZ1

执行以下代码:

DF['Test'] = pd.Categorical(DF['Test'], categories=["TATA","TZTZ","TOTO"], ordered=True)

执行print(DF)后,DataFrame仍保持原有行顺序,并未按设置的分类规则排列。预期输出应为:

TestWGT
TATA7
TZTZ1
TOTO5

执行print(DF.Test)可以确认分类已成功设置,但DataFrame的行顺序未变、索引也未重置,请问问题出在哪里?


原因与解决方法
  • 核心原因:将列转为有序分类(pd.Categorical)只是给该列定义了排序逻辑规则,不会自动对DataFrame的行进行重新排列。这个操作仅修改了列的数据类型,不会改变原有行的顺序。
  • 解决方法:要让DataFrame按照分类顺序排列,需要手动调用sort_values()方法,基于该分类列排序:
    DF = DF.sort_values('Test')
    
    由于Test列已经是有序分类,sort_values会严格遵循你指定的["TATA","TZTZ","TOTO"]顺序来重排行。
  • 若需要重置索引(去掉原有索引,生成连续的新索引),可以在排序后追加reset_index(drop=True):
    DF = DF.sort_values('Test').reset_index(drop=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:46:58