如何将pandas DataFrame指定列整数值映射为同值对应的固定n位随机数
实现方案
核心逻辑是先为A列每个唯一值生成专属的10位随机整数,构建映射字典后批量替换A列数值即可,具体实现代码如下:
import pandas as pd import random # 构造示例DataFrame df = pd.DataFrame([[111, 7,8], [409,6,4], [333, 9,0],[111,3,2],[111,0,0], [409,7,0]], columns=['A','B','C']) # 提取A列唯一值 unique_a = df['A'].unique() # 可选:固定随机种子保证结果可复现,不需要可删除 random.seed(42) # 构建映射字典:每个原值对应唯一的10位随机整数 # 写法1:适用于唯一值数量少的场景 mapping = {val: random.randint(10**9, 10**10 - 1) for val in unique_a} # 写法2:保证随机数完全不重复,适合唯一值数量较多的场景 # random_list = random.sample(range(10**9, 10**10), len(unique_a)) # mapping = dict(zip(unique_a, random_list)) # 替换A列数值 df['A'] = df['A'].map(mapping) print(df)
运行后输出结果和你给出的预期格式一致,相同的原值会映射为完全相同的10位随机整数。
内容的提问来源于stack exchange,提问作者khemedi
相关产品推荐
相关产品推荐

