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

如何按Product_id分组,为Sub_product生成组内连续Priority?

问题:按Product_id分组生成组内连续的Priority编号

现有包含Product_id、Sub_product、Category字段的数据集,需为每个Product_id下的Sub_product按指定Category优先级规则(Superior=1、High-valued=2、VALUE=3、AddOn=4)排序并设置Priority值。目前通过派生列实现了全局连续的Priority,但期望每个Product_id组内的Priority从1开始连续编号,该需求是否可实现?


解决方案:完全可以实现

核心思路是按Product_id分组,在每个组内先根据Category的优先级规则排序,再生成组内从1开始的连续编号。以下是几种常用工具的实现方法:

1. SQL实现

利用窗口函数ROW_NUMBER()结合PARTITION BY分组,同时通过CASE语句映射Category的优先级:

SELECT 
    Product_id,
    Sub_product,
    Category,
    ROW_NUMBER() OVER (
        PARTITION BY Product_id 
        ORDER BY 
            CASE Category 
                WHEN 'Superior' THEN 1
                WHEN 'High-valued' THEN 2
                WHEN 'VALUE' THEN 3
                WHEN 'AddOn' THEN 4
            END ASC
    ) AS Priority
FROM your_dataset;
  • PARTITION BY Product_id:将数据集按产品ID拆分独立分组
  • ORDER BY中的CASE:把Category转换成指定的优先级数值,确保排序符合要求
  • ROW_NUMBER():在每个分组内生成从1开始的连续编号

2. Power Query实现

通过分组+组内排序+添加组内索引完成:

  1. 添加自定义列,映射Category到优先级数值:
    = if [Category] = "Superior" then 1 else if [Category] = "High-valued" then 2 else if [Category] = "VALUE" then 3 else 4
    
  2. 按Product_id分组:选中Product_id列,点击「转换」→「分组依据」,操作选择「所有行」,新列名设为GroupedRows
  3. 展开GroupedRows列,在展开后的子表中按自定义的优先级列排序
  4. 添加组内索引列:点击「添加列」→「索引列」→「从1开始」(确保是在分组后的子表中操作)
  5. 整理列,保留需要的字段即可

3. Python Pandas实现

通过分组后排名的方式生成组内连续编号:

import pandas as pd

# 定义Category与优先级的映射关系
cat_priority_map = {'Superior': 1, 'High-valued': 2, 'VALUE': 3, 'AddOn': 4}

# 给数据集添加优先级数值列
df['cat_priority'] = df['Category'].map(cat_priority_map)

# 按Product_id分组,组内按优先级排序,生成从1开始的连续编号
df['Priority'] = df.groupby('Product_id')['cat_priority'].rank(method='first', ascending=True).astype(int)

# 可选:删除中间生成的cat_priority列
df = df.drop(columns=['cat_priority'])
  • groupby('Product_id'):按产品ID拆分分组
  • rank(method='first'):确保同优先级的Sub_product按原有顺序编号,避免重复值
  • astype(int):将排名结果转为整数,得到标准的连续编号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:05:12