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

Pandas中如何对值相等的Series按索引进行排序

Pandas 对value_counts结果按索引升序排列的原生实现

问题场景

给定测试Series:

import pandas as pd
s1 = pd.Series([23,23,21,21,25,25,25])

默认执行s1.value_counts()会返回按频次降序排列的统计结果,索引为原Series的去重值,默认输出如下:

25    3
23    2
21    2
dtype: int64

需求为将结果按索引值(也就是原Series的被统计值)升序排列,替代手动转字典、反转键值排序的低效方案。

最优实现

不需要做任何字典转换、键值反转操作,直接使用Pandas原生的链式方法即可,无额外数据结构转换开销,执行效率远高于纯Python层面的字典处理逻辑:

# 方法1:拿到默认频次统计结果后直接按索引升序重排
result = s1.value_counts().sort_index(ascending=True)

执行后输出符合预期:

21    2
23    2
25    3
dtype: int64

也可以在调用value_counts时先关闭默认的频次排序规则,再做索引排序,逻辑更直观,性能和方法1几乎无差异:

# 方法2:关闭默认频次排序后按索引排序
result = s1.value_counts(sort=False).sort_index()

补充说明

  • 两种方法均为Pandas底层优化过的实现,在十万级以上数据量场景下,比手动转字典重构的方案快数倍
  • 如果需要调整排序方向,只需要修改sort_index的ascending参数为False即可实现索引降序排列
  • 如果需求是优先按频次降序、同频次下按索引升序,可以用sort_values+sort_index的层级排序实现,可根据实际场景调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:27:46