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

基于cat1、cat2两个类别对id进行自定义排序的技术咨询

多维度自定义优先级排名实现方案

你需要的是按自定义优先级的两个维度排序后生成连续排名,以下是不同场景下的实现方法:

SQL 实现

通过CASE语句给cat1映射自定义排序权重,再配合窗口函数生成排名:

SELECT 
    id,
    cat1,
    cat2,
    ROW_NUMBER() OVER (
        ORDER BY 
            CASE cat1 
                WHEN 'death' THEN 1 
                WHEN 'pd' THEN 2 
                WHEN 'pr' THEN 3 
            END ASC,
            cat2 ASC
    ) AS `rank`
FROM 你的业务表名;

Python Pandas 实现

通过指定分类变量的顺序定义cat1的优先级,排序后生成排名:

import pandas as pd

# 替换为你的实际数据表
df = pd.read_csv("你的数据文件路径.csv")

# 定义cat1的优先级顺序
df['cat1'] = pd.Categorical(df['cat1'], categories=['death', 'pd', 'pr'], ordered=True)

# 按两个维度升序排序后生成排名
df = df.sort_values(by=['cat1', 'cat2'], ascending=[True, True])
df['rank'] = range(1, len(df) + 1)

Excel 实现

通过辅助列映射权重后计算排名:

  1. 新增辅助列D(假设cat1在B列、cat2在C列,数据从第2行开始),D2单元格输入公式:=IF(B2="death",1,IF(B2="pd",2,3)),下拉填充所有行
  2. 排名列E2输入公式:=SUMPRODUCT(--(D2*10+C2>D$2:D$100*10+C$2:C$100))+1,下拉填充即可,公式中的范围D$2:D$100可根据实际数据行数调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:09:03