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

如何在Pandas中按指定顺序使用sort_index排序value_counts结果

自定义value_counts结果的索引排序顺序

嗨,这个问题很常见——默认的sort_index()是按字母顺序排序的,而你需要的是符合业务语义的自定义顺序:low → med → high → vhigh。下面给你两种简单的解决办法:

方法一:将列转为分类类型(推荐,适合后续多次使用)

先把目标列定义为有序分类,指定你想要的顺序,这样后续的统计和排序都会遵循这个规则:

import pandas as pd

# 定义自定义排序顺序
custom_order = ['low', 'med', 'high', 'vhigh']

# 将a列转换为有序分类类型
df['a'] = pd.Categorical(df['a'], categories=custom_order, ordered=True)

# 统计频次并排序,此时sort_index会按自定义顺序排列
result = df['a'].value_counts().sort_index()
print(result)

输出结果会和你期望的一致:

low     10
med     20
high    30
vhigh   15
Name: a, dtype: int64

方法二:直接用reindex重排结果(无需修改原DataFrame)

如果不想改动原始数据,也可以直接对value_counts()的结果重新索引,按自定义顺序排列:

custom_order = ['low', 'med', 'high', 'vhigh']

# 先统计频次
counts = df['a'].value_counts()
# 按自定义顺序重排索引
result = counts.reindex(custom_order)
print(result)

这个方法同样能得到你想要的排序结果,而且不会影响原DataFrame的数据类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:25:17