如何使用数据框执行嵌套循环以进行回归分析

时间:2015-10-26 13:05:11

标签: python pandas regression

如何执行嵌套循环,该循环遍历两个数据帧以获取嵌套循环中列的每个组合。这是为了利用OLS回归

获取各种组合的各种r ^ 2值

例如: DF1包括:

    50      51      52      53
0   73.44   63.44   53.46   44.49
1   395.01  369.01  343.01  317.49
2   339.75  312.76  286.8   262.8

DF2包括:

    50      51      52      53
0   153.81  173.81  193.83  214.86
1   19.98   23.98   27.98   32.46
2   3.06    5.07    8.11    13.11

如何获得两个数据帧列的每个组合并执行

以下是我的代码:

g=50
h=53
for g in range(50, 53):

    q =[ round(elem, 2) for elem in DF1[g].iloc[0:].tolist() ]

    for h in range(50, 53):

        z =[ round(elem, 2) for elem in DF2[h].iloc[0:].tolist() ]
        x = np.row_stack((q,z))
        x = np.array(x).T
        x = sm.add_constant(x)
        results = sm.OLS(endog=y, exog=x).fit()
        my_list.append(results.rsquared)
        h += 1
    g+=1

由于某些原因,我没有得到列的所有组合?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您应指定range(50, 54)或使用iteritems。这应该总共显示4x4 = 16个输出。

df1 = pd.DataFrame({50: [73.44, 395.01, 339.75],
                    51: [63.44, 369.01, 312.76],
                    52: [53.46, 343.01, 286.8],
                    53: [44.49, 317.49, 262.8]})
df2 = pd.DataFrame({50: [153.81, 19.98, 3.06],
                    51: [173.81, 27.98, 5.07],
                    52: [193.83, 27.98, 8.11],
                    53: [214.86, 32.46, 13.11]})

for _, g in df1.iteritems():
    for _, h in df2.iteritems():
        print(np.row_stack((g, h)))
# [[  73.44  395.01  339.75]
#  [ 153.81   19.98    3.06]]
# ...
# [[  44.49  317.49  262.8 ]
#  [ 214.86   32.46   13.11]]