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

Python Pandas如何为相似分组数据添加组ID与全局唯一ID

Pandas 实现列表拆行+自定义ID生成方案

核心实现逻辑:

  • 先把存储列表值的variation_list列拆分为单行单值的长表格式
  • 按原始产品条目顺序生成连续组ID,同个原始产品拆分出的所有行共享同一个group_id
  • 按拆分后的全局行顺序生成连续唯一ID,每个拆分行对应独立的unique_id

完整实现代码

import pandas as pd

# 1. 构造/读取原始DataFrame
# 注意:如果你的variation_list列是字符串格式(比如存储为"['Black', 'White']"文本),先执行下面两行转成真实列表
# import ast
# df['variation_list'] = df['variation_list'].apply(ast.literal_eval)
df = pd.DataFrame({
    'product_title': [
        'Chauvet DJ GigBar Move Effect Light System',
        'Rane Twelve MKII DJ Controller'
    ],
    'variation_list': [
        ['Black', 'White'],
        ['New', 'Blemished']
    ]
})

# 2. 拆分variation列表为单独行
df = df.explode('variation_list', ignore_index=True)

# 3. 生成group_id:同产品同组,从FAT-1301开始编号
group_serial = df['product_title'].factorize()[0] + 1301
df['group_id'] = [f'FAT-{serial:04d}' for serial in group_serial]

# 4. 生成unique_id:全局唯一,从FAT-01开始编号
unique_serial = range(1, len(df)+1)
df['unique_id'] = [f'FAT-{serial:02d}' for serial in unique_serial]

# 5. 调整列顺序匹配目标结构
df = df[['group_id', 'product_title', 'variation_list', 'unique_id']]

运行结果

执行代码后输出的DataFrame和预期结构完全一致:

group_id                              product_title variation_list unique_id
0  FAT-1301  Chauvet DJ GigBar Move Effect Light System          Black    FAT-01
1  FAT-1301  Chauvet DJ GigBar Move Effect Light System          White    FAT-02
2  FAT-1302             Rane Twelve MKII DJ Controller            New    FAT-03
3  FAT-1302             Rane Twelve MKII DJ Controller      Blemished    FAT-04

适配说明

  • 如果存在同名不同产品的场景,不要用product_title做分组依据,可以在原始DataFrame先生成不重复的产品序号列,拆分后基于这个序号列生成group_id即可
  • 如果需要调整ID起始值,直接修改代码里1301和range()的起始数字即可
  • 如果需要调整ID补零位数,修改格式化字符串里的位数参数即可,比如要3位补零就把%02d改成%03d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:15:39