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

如何基于DataFrame分类变量的取值范围生成指定数量随机数

你可以用pandas+numpy实现该需求,以下是可直接运行的完整代码:

首先导入依赖库:

import pandas as pd
import numpy as np

先构造和你截图结构一致的示例原始DataFrame,你可以直接替换成你自己的原始数据:

df_origin = pd.DataFrame({
    'name': ['A', 'B'],
    'var1_min': [1, 10],
    'var1_max': [5, 20],
    'var2_min': [0.2, 1.5],
    'var2_max': [0.8, 3.2],
    'var3_min': [100, 500],
    'var3_max': [200, 800]
})

固定列数实现(变量少的场景更直观)

gen_num = 5  # 每个条目生成的样本数量,可自行修改
result_list = []

for _, row in df_origin.iterrows():
    # 按对应区间生成每个变量的随机值
    temp_df = pd.DataFrame({
        'name': [row['name']]*gen_num,
        'sample_id': range(1, gen_num+1),
        'var1': np.random.uniform(row['var1_min'], row['var1_max'], gen_num),
        'var2': np.random.uniform(row['var2_min'], row['var2_max'], gen_num),
        'var3': np.random.uniform(row['var3_min'], row['var3_max'], gen_num)
    })
    result_list.append(temp_df)

# 合并得到最终结果
df_result = pd.concat(result_list, ignore_index=True)

自动适配变量列实现(变量多的场景更便捷)

不需要手动枚举每个变量,自动识别所有带_min/_max后缀的列批量生成:

gen_num = 5
result_list = []
# 自动提取所有变量前缀
var_cols = list(set([col.replace('_min', '').replace('_max', '') for col in df_origin.columns if col.endswith(('_min', '_max'))]))

for _, row in df_origin.iterrows():
    temp_dict = {
        'name': [row['name']]*gen_num,
        'sample_id': range(1, gen_num+1)
    }
    for var in var_cols:
        temp_dict[var] = np.random.uniform(row[f'{var}_min'], row[f'{var}_max'], gen_num)
    result_list.append(pd.DataFrame(temp_dict))

df_result = pd.concat(result_list, ignore_index=True)

如果需要生成整数随机值,把np.random.uniform替换为np.random.randint即可;如果需要固定随机结果方便复现,在生成代码前加np.random.seed(42)即可,数字可自行修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:02