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

如何用Pandas替换xlsx中UniversalIDS列的重复值为唯一ID?

解决Pandas替换Excel重复UUID为唯一新ID的问题

问题根源

你之前的代码失效的核心原因是:uuid.uuid4()只会生成单个UUID值,然后把这个值批量赋值给所有重复行,导致重复行的新ID完全相同,并没有实现“唯一”的要求。

正确实现方案

需要为每一行重复值单独生成一个新的UUID,以下是两种可行的方式:

方法1:利用apply生成唯一UUID

import pandas as pd
import uuid

# 读取Excel文件
df = pd.read_excel('C:/Users/Nervous/Downloads/ss.xlsx')

# 标记重复行(保留第一次出现的值,替换后续重复项)
mask = df['UniversalIDS'].duplicated()

# 对重复行的UniversalIDS列,每行生成一个新UUID
df.loc[mask, 'UniversalIDS'] = df.loc[mask, 'UniversalIDS'].apply(lambda x: str(uuid.uuid4()))

# 保存修改后的文件
df.to_excel("C:/Users/Nervous/Downloads/tt.xlsx", index=False)

print("处理完成!")

方法2:生成对应数量的UUID列表赋值

这种方式性能更优,适合大数据量场景:

import pandas as pd
import uuid

df = pd.read_excel('C:/Users/Nervous/Downloads/ss.xlsx')

mask = df['UniversalIDS'].duplicated()
# 生成与重复行数量一致的UUID列表
new_uuids = [str(uuid.uuid4()) for _ in range(mask.sum())]

# 赋值给重复行
df.loc[mask, 'UniversalIDS'] = new_uuids

df.to_excel("C:/Users/Nervous/Downloads/tt.xlsx", index=False)
print("处理完成!")

验证结果

可以通过以下代码检查处理后UniversalIDS列的唯一性:

print(df['UniversalIDS'].nunique() == len(df))

输出True表示所有ID都是唯一的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:35:27