如何基于每行均值和标准差生成1000组随机变量及分位列?
批量生成随机值列与五分位秩列
原始DataFrame结构
| City | Mean | SD |
|---|---|---|
| Newcastle | 60 | 0.81 |
| Liverpool | 62 | 0.91 |
| Cardiff | 65 | 0.87 |
| Glasgow | 59 | 0.86 |
需求说明
基于上述DataFrame,需循环执行以下两步操作1000次,最终添加2000列:
- 生成以
n1、n2…n1000命名的随机值列,每列数据由对应行的Mean为均值、SD为标准差的正态分布生成 - 生成对应命名为
q1、q2…q1000的五分位秩列,基于同批次的随机值列做五分位分割,得到0-4的整数秩标签
实现代码
import numpy as np import pandas as pd # 假设原始数据已存入df变量 for i in range(1, 1001): # 生成随机值列 col_n = f'n{i}' df[col_n] = np.random.normal(df['Mean'], df['SD']) # 生成对应五分位秩列 col_q = f'q{i}' df[col_q] = pd.qcut(df[col_n], 5, labels=False)
代码说明
- 用
for循环遍历1到1000的整数,动态生成每批次的列名 np.random.normal()按每行的均值和标准差生成正态分布随机数,存入对应n{i}列pd.qcut()将随机值列分割为5个等频区间,labels=False返回0到4的整数表示数据所在分位,结果存入对应q{i}列
内容的提问来源于stack exchange,提问作者gorilla
相关产品推荐
相关产品推荐

