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

Pandas:如何按两列对DataFrame排序(首列优先,重复看次列)

用Pandas按多列优先级排序的实现方法

嘿,这个需求在Pandas里处理起来超简单!咱们直接用sort_values()方法就能完美实现你要的「优先按第一列排序,仅当第一列值重复时再参考第二列」的规则。

核心用法

你只需要把要排序的列名按优先级顺序放到by参数的列表里就行——列表的第一个元素是最高优先级的列,第二个是次优先级,以此类推。

基本语法:

# 假设你的DataFrame是df,要按col1优先、col2次之排序
df_sorted = df.sort_values(by=['col1', 'col2'])

自定义排序方向

默认情况下所有列都是升序排序,如果需要给不同列指定不同的排序方向,可以用ascending参数(同样是列表,顺序和by对应):

# col1升序,col2降序
df_sorted = df.sort_values(by=['col1', 'col2'], ascending=[True, False])

实操示例

给你举个具体的例子,一看就懂:

import pandas as pd

# 创建示例DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob'],
    'Score': [85, 78, 92, 88, 82]
}
df = pd.DataFrame(data)

# 按Name优先,Score次之排序
df_sorted = df.sort_values(by=['Name', 'Score'])
print(df_sorted)

输出结果会是:

Name  Score
0    Alice     85
2    Alice     92
1      Bob     78
4      Bob     82
3  Charlie     88

可以看到,先把相同Name的行归到一起,然后在每个Name组内按Score升序排列,完全符合你的要求。

原地排序小技巧

如果你不想创建新的DataFrame,而是直接修改原数据,可以加上inplace=True参数:

df.sort_values(by=['col1', 'col2'], inplace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:47:47