我在数据帧df1中有一组列(col1,col2,col3)我在数据帧df2中有另一组列(col4,col5,col6)假设这两个数据帧具有相同的行数.
如何生成在df1和df2之间进行成对相关的相关表?
桌子看起来像
col1 col2 col3 col4 .. .. .. col5 .. .. .. col6 .. .. ..
我用df1.corrwith(df2)
,它似乎没有按要求生成表.
我在如何检查两个数据集的匹配列之间的相关性时看到了答案?,但主要区别在于col名称不匹配.
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