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

如何用Python根据CSV行中条件生成对应范围的随机数?

根据条件为现有DataFrame填充随机数

方法1:自定义函数 + apply()

适合数据量不大的场景,逻辑直观易懂:

首先导入依赖库:

import pandas as pd
import numpy as np

定义生成随机数的函数,根据每行的Letter值返回对应范围的整数:

def get_random_num(row):
    match row['Letter']:
        case 'A':
            return np.random.randint(1, 6)  # 左闭右开区间,生成1-5的整数
        case 'B':
            return np.random.randint(2, 7)  # 生成2-6的整数
        case 'C':
            return np.random.randint(3, 8)  # 生成3-7的整数
        case _:
            return None  # 处理未定义的Letter值

直接对Random Number列赋值:

df['Random Number'] = df.apply(get_random_num, axis=1)

方法2:np.select() 向量化操作

适合大数据量场景,效率远高于逐行处理:

import pandas as pd
import numpy as np

# 定义条件列表
conditions = [
    df['Letter'] == 'A',
    df['Letter'] == 'B',
    df['Letter'] == 'C'
]

# 对应条件的随机数数组(提前生成对应长度的数组)
choices = [
    np.random.randint(1, 6, size=len(df)),
    np.random.randint(2, 7, size=len(df)),
    np.random.randint(3, 8, size=len(df))
]

# 填充Random Number列
df['Random Number'] = np.select(conditions, choices, default=None)

补充说明

  • 如果需要生成浮点数,把np.random.randint替换为np.random.uniform,比如np.random.uniform(1, 5)会生成1到5之间的随机浮点数
  • 若要固定随机种子保证结果可复现,在生成随机数前添加np.random.seed(42)(数字可自定义)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:45:39