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

基于Pandas列去重生成唯一ID的优化方案咨询

基于指定列生成唯一ID的Pandas高效实现

你当前的循环实现虽然可行,但数据量较大时性能会明显下降,Pandas原生的向量化操作能更简洁高效地完成这个需求,以下是两种最优方案:

方案1:用groupby().ngroup()(最简洁直观)

这个方法直接对指定列分组,为每个唯一值组合分配递增整数ID,sort=False参数保证ID顺序与原数据中组合首次出现的顺序一致,和你原代码的逻辑完全匹配:

import pandas as pd

optimal = ["date", "amount", "description", "tenant_id", "comment", "bank_account_id"]
# 直接生成unique_id,无需创建is_duplicated列
data_normalization["unique_id"] = data_normalization.groupby(optimal, sort=False).ngroup()

方案2:用pd.factorize()

factorize可将任意可哈希序列转换为整数ID,我们可以把指定列的每行转为元组(元组支持哈希),再传入factorize处理:

import pandas as pd

optimal = ["date", "amount", "description", "tenant_id", "comment", "bank_account_id"]
# 将指定列的每行转为元组,再生成ID
data_normalization["unique_id"] = pd.factorize(data_normalization[optimal].agg(tuple, axis=1))[0]

优势说明

  • 两者都是向量化操作,比循环遍历效率高几个数量级,大数据集下差异尤为明显;
  • 代码更简洁,无需手动筛选重复行、循环赋值;
  • 自动处理所有重复行,不需要额外维护is_duplicated列。

内容的提问来源于stack exchange,提问作者Joao Henrique Ferreira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:51:12