【发布时间】:2019-08-23 21:33:08
【问题描述】:
我正在为 MC 运行一个简单的 python 脚本。基本上它读取数据框中的每一行并选择两个变量的最大值和最小值。然后模拟运行 1000 次,在最小值和最大值之间选择一个随机值并计算乘积并将 P50 值写回数据表。
不知何故,所有行的 P50 输出都是相同的。关于我哪里出错的任何帮助?
import pandas as pd
import random
import numpy as np
data = [[0.075,0.085, 120, 150], [0.055, 0.075, 150, 350],[0.045,0.055,175,400]]
df = pd.DataFrame(data, columns = ['P_min','P_max','H_min','H_max'])
NumSim = 1000
for index, row in df.iterrows():
outdata = np.zeros(shape=(NumSim,), dtype=float)
for k in range(NumSim):
phi = (row['P_min'] + (row['P_max'] - row['P_min']) * random.uniform(0, 1))
ht = (row['H_min'] + (row['H_max'] - row['H_min']) * random.uniform(0, 1))
outdata[k] = phi*ht
df['out_p50'] = np.percentile(outdata,50)
print(df)
【问题讨论】:
标签: python pandas montecarlo