如何执行嵌套循环,该循环遍历两个数据帧以获取嵌套循环中列的每个组合。这是为了利用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
由于某些原因,我没有得到列的所有组合?有什么建议吗?
答案 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]]