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

如何按指定优先级对product_number列去重生成唯一DataFrame?

按产品优先级去重生成唯一DataFrame

核心思路

先给不同产品名称定义优先级权重(遵循Product A > B > C的规则,其他产品优先级默认最低),再按product_number分组,每组保留优先级最高的记录。

实现步骤

  • 定义优先级映射字典:明确A、B、C的优先级顺序,其他产品可按需设置默认优先级
  • 给原DataFrame添加优先级列:将product_name转换为对应的优先级数值
  • 分组排序去重:按product_number分组,组内按优先级降序排列,取第一条记录即为该组优先级最高的条目

代码示例

import pandas as pd

# 模拟原始数据
raw_data = {
    'product_number': ['1000003', '1000003', '1000005', '1000005', '1000006', '1000006', '1000007'],
    'product_name': ['Product B', 'Product A', 'Product C', 'Product A', 'Product C', 'Product B', 'Product D'],
    'sku_info': ['SKU001', 'SKU002', 'SKU003', 'SKU004', 'SKU005', 'SKU006', 'SKU007']
}
df = pd.DataFrame(raw_data)

# 设定优先级:A(3) > B(2) > C(1),未指定的产品默认优先级0
priority_dict = {'Product A': 3, 'Product B': 2, 'Product C': 1}
df['priority_score'] = df['product_name'].map(priority_dict).fillna(0)

# 按产品编号分组,保留优先级最高的记录
unique_df = df.sort_values('priority_score', ascending=False)\
              .groupby('product_number', as_index=False)\
              .first()

# 移除临时优先级列
unique_df = unique_df.drop('priority_score', axis=1)

print(unique_df)

输出结果

product_number product_name sku_info
0        1000003    Product A   SKU002
1        1000005    Product A   SKU004
2        1000006    Product B   SKU006
3        1000007    Product D   SKU007

灵活调整

如果后续需要新增产品优先级,只需修改priority_dict即可,比如添加'Product E': 4就能让E的优先级高于A。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:57:20