循环遍历DataFrame列的所有转换组合

时间:2015-12-03 15:43:27

标签: python python-2.7 pandas statsmodels

对于回归问题,我试图在df df的各列上尝试各种转换(log,exp,sqrt,** 2,自定义转换)。

如果A包含BYdf列,那么如何创建一个循环,以便我们对应用于所有可能的转换组合执行回归sm.ols(formula="Y ~ np.log(A) + B", data=df).fit() sm.ols(formula="Y ~ np.log(A) + np.log(B)", data=df).fit() sm.ols(formula="Y ~ np.log(A) + exp(B)", data=df).fit() sm.ols(formula="Y ~ exp(A) + B", data=df).fit() sm.ols(formula="Y ~ exp(A) + exp(B)", data=df).fit() ... sm.ols(formula="transform1(Y) ~ transform1(A) + transform1(B)", data=df).fit() 的列?

例如:

{{1}}

1 个答案:

答案 0 :(得分:1)

创建变量及其转换的列表,并使用itertools.combinations创建2个元素的所有组合:

variables = [('A', 'np.log(A)', 'exp(A)'), ('B', 'np.log(B)', 'exp(B)')]
for combination in itertools.product(*variables):
    sm.ols(formula="Y ~ {0} + {1}".format(combination[0], combination[1]) data=df).fit()
相关问题