将 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