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

如何在Pandas DataFrame中为唯一区域分配固定的0-1区间唯一随机浮点数列

如何在Pandas DataFrame中为唯一区域分配固定的0-1区间唯一随机浮点数列

我明白你的需求啦——给每个唯一的地区分配一个固定的0到1之间的随机浮点数,而且每次重新运行代码,这些数值都不会变对吧?你现在的问题是只生成了单个随机数,不知道怎么把随机数和每个地区一一绑定,下面我给你一步步解决这个问题:

核心思路

我们可以先创建一个**「地区-随机数」的映射字典**,给每个唯一地区分配专属的随机数(靠固定种子保证每次生成结果一致),再把这个字典映射到DataFrame的region列上,就能得到你想要的新列了。

完整实现代码

import pandas as pd
import numpy as np
import random

list_reg = ['region1', 'region2', 'region3', 'region4', 'region5', 'region6']

df_test = pd.DataFrame({
    'region': list_reg,
    'product1': [100, 250, 350, 555, 999999, 200000],
    'product2': [41, 111, 12.14, 16.18, np.nan, 200003],
    'product3': [7.04, 2.09, 11.14, 2000320, 22.17, np.nan],
    'product4': [236, 249, 400, 0.56, 359, 122],
    'product5': [None, 1.33, 2.54, 1, 0.9, 3.2]})

# 设置随机种子,确保每次运行生成的随机数完全一致
random.seed(123)

# 用字典推导式给每个地区分配专属随机数
region_random_map = {region: random.uniform(0.0001, 1.0) for region in list_reg}

# 新增列:把字典映射到region列,每个地区对应固定随机数
df_test['random_float'] = df_test['region'].map(region_random_map)

# 查看最终结果
print(df_test)

代码说明

  • 固定随机种子:random.seed(123)会锁定随机数生成逻辑,不管你重新运行多少次,每个地区对应的随机数都不会变。
  • 映射字典:通过字典推导式遍历所有唯一地区,给每个地区生成0.0001到1之间的随机浮点数,保证每个地区对应唯一值。
  • 生成新列:map方法会自动把region列的每个值匹配到字典里对应的随机数,哪怕你的DataFrame里有重复的地区行(比如同一个region出现多次),也会统一映射到同一个随机数。

运行结果示例

regionproduct1product2product3product4product5random_float
region110041.07.04236None0.052363
region2250111.02.092491.330.087186
region335012.1411.144002.540.407241
region455516.1820003200.561.00.022921
region5999999NaN22.173590.90.442143
region6200000200003.0NaN1223.20.794025

(注:因为种子固定为123,你运行代码得到的随机数和上面的示例完全一致)

备注:内容来源于stack exchange,提问作者user032020

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:33:12