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

如何遍历Pandas DataFrame列并拼接序号生成唯一UID

解决方案

你可以通过pandas的分组计数功能快速实现需求,步骤如下:

  1. 生成分组内的序号:对concat列分组后,使用cumcount()获取每个组内的行索引(从0开始),加1后得到每组的序号
  2. 拼接生成唯一ID:将concat列与序号用-连接,得到uid列

完整代码示例

import pandas as pd

# 构造示例数据
data = {
    'FY': [2015]*10,
    'group': ['GROUP_A']*5 + ['GROUP_B']*5,
    'item': [1,1,1,10,7,23,23,23,23,21],
    'concat': ['2015-GROUP_A-1','2015-GROUP_A-1','2015-GROUP_A-1','2015-GROUP_A-10','2015-GROUP_A-7',
               '2015-GROUP_B-23','2015-GROUP_B-23','2015-GROUP_B-23','2015-GROUP_B-23','2015-GROUP_B-2']
}
df = pd.DataFrame(data)

# 生成组内序号并拼接uid
df['uid'] = df['concat'] + '-' + (df.groupby('concat').cumcount() + 1).astype(str)

# 查看结果
print(df)

结果说明

运行后会得到你期望的输出:每个concat值对应的行被依次编号,拼接后形成唯一的uid,比如重复3次的2015-GROUP_A-1会生成2015-GROUP_A-1-1/2/3,单次出现的则生成xxx-1。

另外注意你原始数据中最后一行的concat值是2015-GROUP_B-2,但期望结果里是2015-GROUP_B-21,如果是数据录入错误,只需要修正原始数据的concat列即可,代码逻辑不受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:55:21