【问题标题】: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    
...

不幸的是,我不知道如何遍历第一个数据框的行来创建场景。

有人可以帮助我吗? 最好的问候

【问题讨论】:

    标签: python dataframe scenarios


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 2018-09-28
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      • 2019-02-04
      相关资源
      最近更新 更多