我在数据框 df1 中有一组列 (col1,col2,col3) 我在数据框 df2 中有另一组列(col4、col5、col6) 假设这两个数据帧具有相同的行数。
如何生成在 df1 和 df2 之间进行成对关联的关联表?
表格看起来像
col1 col2 col3
col4 .. .. ..
col5 .. .. ..
col6 .. .. ..
我使用df1.corrwith(df2)
,它似乎没有按要求生成表格。
我在 How to check correlation between matching columns of two data sets? 看到了答案, 但主要区别在于列名称不匹配。
最佳答案
pandas
又快又脏
pd.concat([df1, df2], axis=1, keys=['df1', 'df2']).corr().loc['df2', 'df1']
numpy
干净
def corr(df1, df2):
n = len(df1)
v1, v2 = df1.values, df2.values
sums = np.multiply.outer(v2.sum(0), v1.sum(0))
stds = np.multiply.outer(v2.std(0), v1.std(0))
return pd.DataFrame((v2.T.dot(v1) - sums / n) / stds / n,
df2.columns, df1.columns)
corr(df1, df2)
例子
df1 = pd.DataFrame(np.random.rand(10, 4), columns=list('abcd'))
df2 = pd.DataFrame(np.random.rand(10, 3), columns=list('xyz'))
pd.concat([df1, df2], axis=1, keys=['df1', 'df2']).corr().loc['df2', 'df1']
a b c d
x 0.235624 0.844665 -0.647962 0.535562
y 0.357994 0.462007 0.205863 0.424568
z 0.688853 0.350318 0.132357 0.687038
corr(df1, df2)
a b c d
x 0.235624 0.844665 -0.647962 0.535562
y 0.357994 0.462007 0.205863 0.424568
z 0.688853 0.350318 0.132357 0.687038
关于python - 如何在具有不同列名的两个数据帧之间执行关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41823728/