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

Pandas大数据集下文本字段转唯一数值ID的优化实现问询

最优实现方案

直接使用pandas内置的factorize()方法即可,该方法就是为分类值转唯一整数编码设计的,时间复杂度O(n),性能远优于去重合并的实现,代码也更简洁:

# 一行完成转换,加1是为了让id从1开始匹配你的输出要求
df['key_id'] = pd.factorize(df['name'].astype(str))[0] + 1

效果验证

运行测试代码:

import pandas as pd
df = pd.DataFrame({'name': ['adam', 'mick', 'john', 'adam']})
df['key_id'] = pd.factorize(df['name'].astype(str))[0] + 1
print(df)

输出完全符合你的要求:

name  key_id
0  adam       1
1  mick       2
2  john       3
3  adam       1

额外说明

  • 如果你的name列本身已经是字符串类型,可以省略.astype(str),代码更精简
  • 如果需要保留name和key_id的映射关系后续使用,可以单独存下来:
# 同时获取编码和去重后的name列表
encode_arr, unique_names = pd.factorize(df['name'].astype(str))
df['key_id'] = encode_arr + 1
# 生成映射字典
name_id_map = dict(zip(unique_names, df['key_id'].unique()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:06:01