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

为何Pandas DataFrame使用sort_values按多列排序时二级排序未生效?

关于Pandas sort_values二级排序不生效的问题

不是你的理解有误,问题出在你的DataFrame中列b的所有值都是唯一的,二级排序(按a列)没有触发的前提条件。

具体分析

先看你的原始数据:

import pandas as pd
my_newobj = pd.DataFrame({'b': [4, 7, -3, 2], 'a': [0, 4, 7, 1]})

b列的取值是[4,7,-3,2],每个值仅出现一次,没有重复项。当调用sort_values(by=['b', 'a'])时:

  1. Pandas会先按b列进行主排序,由于b列没有重复值,每一行的最终位置已经完全由b列的顺序决定;
  2. 二级排序(按a列)只有在主排序列存在重复值时才会生效——用来给主排序结果中b值相同的行进一步区分顺序。你的数据里没有这种场景,所以a列的排序逻辑没机会体现。

验证二级排序效果的示例

修改数据让b列出现重复值,就能看到二级排序的作用:

# 构造b列有重复值的DataFrame
my_newobj = pd.DataFrame({'b': [4, 4, -3, 2], 'a': [0, 4, 7, 1]})
# 执行排序
print(my_newobj.sort_values(by=['b', 'a']))

输出结果:

b  a
2 -3  7
3  2  1
0  4  0
1  4  4

这里b=4的两行,会按a列的升序(0→4)排列,这就是二级排序的实际效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:39