将 Pandas 数据框单元格转换为函数输入
Converting a Pandas Dataframe Cell into a Function Input
我有一个数据框 df,它包含不同变量(V1、V2 等)的概率分布:
distribution parameter_1 parameter_2 parameter_3
V1 Beta 132.0 6775.1 -0.2
V2 Beta 297.4 22734.6 -0.5
V3 Gamma 458.8 -0.4 0.0
V4 Beta 40391.7 7619.2 -13.3
V5 Beta 182.9 5148014.0 -0.3
V6 Beta 295.2 12452.0 -0.4
V7 Beta 32.2 11934770.0 -0.2
要select "V1" 的分布,Beta,从数据帧,并将其存储在命名字符串中,我执行以下操作:
variable = df.loc["V1"][0]
这会将分发名称存储为名为 "variable".
的字符串
我想在此公式中使用存储在 "variable" 中的分发名称:
V1_obs = pm.Beta('V1_obs', mu=mu, sigma=sigma, observed=V1)
如果我尝试将 "variable" 替换为分发名称,如下所示:
V1_obs = pm.variable('V1_obs', mu=mu, sigma=sigma, observed=V1)
它说模块没有名为"variable"的函数。有没有人知道我如何让 "variable" 在函数中工作?
现在,当您执行 pm.variable 时,python 会在模块 'pm' 中查找名为 'variable' 的对象。您想要的是让模块查找与 'variable'
的值同名的相应 object/function
您可以将变量名保存到函数映射中,例如
fn_dict = {'Beta':pm.Beta, 'Gamma':pm.Gamma}
然后试试,
V1_obs = fn_dict[variable]('V1_obs', mu=mu, sigma=sigma, observed=V1)
这应该有效。在字典中查找 'variable' 时,它将 return 来自模块
的相应 object/fn
我有一个数据框 df,它包含不同变量(V1、V2 等)的概率分布:
distribution parameter_1 parameter_2 parameter_3
V1 Beta 132.0 6775.1 -0.2
V2 Beta 297.4 22734.6 -0.5
V3 Gamma 458.8 -0.4 0.0
V4 Beta 40391.7 7619.2 -13.3
V5 Beta 182.9 5148014.0 -0.3
V6 Beta 295.2 12452.0 -0.4
V7 Beta 32.2 11934770.0 -0.2
要select "V1" 的分布,Beta,从数据帧,并将其存储在命名字符串中,我执行以下操作:
variable = df.loc["V1"][0]
这会将分发名称存储为名为 "variable".
的字符串我想在此公式中使用存储在 "variable" 中的分发名称:
V1_obs = pm.Beta('V1_obs', mu=mu, sigma=sigma, observed=V1)
如果我尝试将 "variable" 替换为分发名称,如下所示:
V1_obs = pm.variable('V1_obs', mu=mu, sigma=sigma, observed=V1)
它说模块没有名为"variable"的函数。有没有人知道我如何让 "variable" 在函数中工作?
现在,当您执行 pm.variable 时,python 会在模块 'pm' 中查找名为 'variable' 的对象。您想要的是让模块查找与 'variable'
的值同名的相应 object/function您可以将变量名保存到函数映射中,例如
fn_dict = {'Beta':pm.Beta, 'Gamma':pm.Gamma}
然后试试,
V1_obs = fn_dict[variable]('V1_obs', mu=mu, sigma=sigma, observed=V1)
这应该有效。在字典中查找 'variable' 时,它将 return 来自模块
的相应 object/fn