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

如何按自定义规则对Pandas DataFrame执行多列排序

Pandas DataFrame 多列混合排序解决方案

你可以通过自定义排序映射配合sort_values方法实现需求,两种实现方式如下:

全版本兼容写法

import pandas as pd

# 定义price_band的优先级映射,数值越小排序越靠前
band_rank = {
    "≤95.0$": 1,
    "95.0$ > price ≥ 115.0$": 2,
    "> 115.0$": 3
}

# 新增临时排序列,排序完成后删除临时列即可
car_accessories["rank"] = car_accessories["price_band"].map(band_rank)
sorted_df = car_accessories.sort_values(
    by=["a", "b", "c", "car", "rank"], 
    ascending=True
).drop("rank", axis=1)

高版本简洁写法(pandas ≥ 1.1.0 支持key参数)

band_rank = {
    "≤95.0$": 1,
    "95.0$ > price ≥ 115.0$": 2,
    "> 115.0$": 3
}

sorted_df = car_accessories.sort_values(
    by=["a", "b", "c", "car", "price_band"],
    key=lambda col: col.map(band_rank) if col.name == "price_band" else col,
    ascending=True
)

逻辑说明

  • 提前为price_band的三个固定值绑定排序权重,保证价格区间的顺序符合自定义要求
  • a/b/c/car四个列直接按默认字符串升序排列即可匹配字母升序需求
  • 所有列统一设置ascending=True即可同时满足两类排序规则,最终输出效果和示例示意图一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:18:04