如何解决从数据帧生成具有不同均值的 szenarios
我有以下数据框:
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
...
不幸的是,我不知道如何遍历第一个数据帧的行来创建场景。
有人可以帮我吗? 最好的问候
解决方法
创建一些实验数据
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-894c',2.2,0.72],'5-894d',2.3,0.73],'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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。