从数据框生成具有不同方式的场景
Posted
技术标签:
【中文标题】从数据框生成具有不同方式的场景【英文标题】:Generate szenarios with differnet means from data frame 【发布时间】:2021-04-01 06:21:51 【问题描述】:我有以下数据框:
Cluster OPS(4) mean(ln) std(ln)
0 5-894 5-894a 2.203 0.775
1 5-894 5-894b 2.203 0.775
2 5-894 5-894c 2.203 0.775
3 5-894 5-894d 2.203 0.775
4 5-894 5-894e 2.203 0.775
对于每种手术类型(在 OPS(4) 列中),我想生成 10.000 个场景,这些场景应该存储在另一个数据框中。
我知道,我可以通过以下方式创建场景:
num_reps = 10.000
scenarios = np.ceil(np.random.lognormal(mean, std, num_reps))
新的数据框应该如下所示,每列包含 10,000 个场景:
scen_per_surg = pd.DataFrame(index=range(num_reps), columns=merged_information['OPS(4)'])
OPS(4) 5-894a 5-894b 5-894c 5-894d 5-894e
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN
...
不幸的是,我不知道如何遍历第一个数据框的行来创建场景。
有人可以帮助我吗? 最好的问候
【问题讨论】:
【参考方案1】:创建一些实验数据
import pandas as pd
df = pd.DataFrame(data=[
[ '5-894' , '5-894a' , 2.0 , 0.70],
[ '5-894' , '5-894b' , 2.1 , 0.71],
[ '5-894' , '5-894c' , 2.2 , 0.72],
[ '5-894' , '5-894d' , 2.3 , 0.73],
[ '5-894' , '5-894e' , 2.4 , 0.74] ], columns =['Cluster', 'OPS(4)', 'mean(ln)', 'std(ln)'])
print(df)
创建一个空数据框
new_df = pd.DataFrame()
定义一个函数,该函数将应用于原始 df 的每一行并生成所需的随机值并将其分配给新 df 中的一列
import numpy as np
def geb_scenarios(row):
# print(row)
col, mean, std = row[1:]
new_df[col] = np.ceil(np.random.lognormal(mean, std, 10))
应用函数
df.apply(geb_scenarios, axis=1)
print(new_df)
【讨论】:
以上是关于从数据框生成具有不同方式的场景的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python从熊猫数据框中将电子邮件发送到具有不同主题的不同收件人地址