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

如何在pandas中按指定顺序对DataFrame多列进行排序

Pandas多字段优先级排序问题解决

你现有写法的问题有两点:

  • 连续多次调用sort_values的逻辑错误:后执行的排序操作会打乱前一次已经排好的顺序,无法实现多优先级叠加排序。pandas的sort_values本身支持一次传入所有排序字段,by参数的列表顺序就是优先级从高到低的顺序,ascending参数传入对应长度的布尔值列表,就能分别指定每个字段的升降序规则。
  • 你描述的排序优先级和你给出的期望输出不匹配:从你贴的预期结果反推,实际需要的优先级为「首先B列升序、其次C列降序、最后A列升序」,和你写的优先级顺序不一致。

正确实现代码如下:

import pandas as pd

# 构造你的测试数据
data = {
    "A": ["a","b","c","d","e","f","g","h","i","j"],
    "B": ["c0","c0","c0","c1","c1","c2","c2","c1","c2","c0"],
    "C": [170,170,88,12,28,160,37,12,160,88]
}
df = pd.DataFrame(data)

# 按需求排序
df = df.sort_values(by=["B", "C", "A"], ascending=[True, False, True]).reset_index(drop=True)
print(df)

运行后输出结果和你给出的预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:24:03