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

如何为Pandas列中唯一敏感ID替换固定随机数(随机分类)

实现敏感ID的一致性随机掩码替换

要实现相同ID对应固定随机替换值的需求,核心是先给每个唯一ID分配专属随机值,再通过映射关系批量替换,以下是基于Python pandas的高效实现方案:

步骤说明

  1. 提取所有唯一ID,避免重复生成随机值
  2. 为每个唯一ID生成固定的随机替换值(支持整数、固定长度字符串等格式)
  3. 利用映射关系快速替换原列,保证相同ID对应相同掩码值

代码示例

基础整数掩码实现

import pandas as pd
import numpy as np

# 初始化你的DataFrame
df = pd.DataFrame({'id': [11, 22, 22, 333, 33, 333]})

# 获取所有唯一ID
unique_ids = df['id'].unique()

# 生成唯一ID到随机整数的映射(范围可自定义,这里是0-999)
id_mask_map = {uid: np.random.randint(0, 1000) for uid in unique_ids}

# 替换原ID列(也可新增列保留原数据)
df['id'] = df['id'].map(id_mask_map)

print(df)

固定长度字符串掩码实现(如示例中的"00"格式)

如果需要生成固定位数的字符串掩码,可调整映射生成逻辑:

import pandas as pd
import numpy as np

df = pd.DataFrame({'id': [11, 22, 22, 333, 33, 333]})
unique_ids = df['id'].unique()

# 生成两位固定长度的字符串掩码,不足两位补0
id_mask_map = {uid: str(np.random.randint(0, 100)).zfill(2) for uid in unique_ids}

df['id'] = df['id'].map(id_mask_map)
print(df)

加密级随机数实现(更高安全性)

如果对随机数安全性要求高,可使用secrets模块:

import pandas as pd
import secrets

df = pd.DataFrame({'id': [11, 22, 22, 333, 33, 333]})
unique_ids = df['id'].unique()

id_mask_map = {uid: secrets.randbelow(1000) for uid in unique_ids}
df['id'] = df['id'].map(id_mask_map)

优势

  • 效率高:unique()和map()都是pandas的高效操作,处理上万条数据毫无压力
  • 灵活性:可根据需求自定义随机数的范围、格式(整数、字符串、不同长度等)
  • 一致性:同一ID只会生成一次随机值,确保替换后相同ID对应相同掩码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:03:30