<p><strong>基本答案:</strong></p>
<p>下面是一个可能会更清楚的例子:</p>
<pre><code>np.random.seed(123)
df1=pd.DataFrame( np.random.randn(3,2), columns=list('ab') )
df2=pd.DataFrame( np.random.randn(3,2), columns=list('ac') )
</code></pre>
<p>如@ffeast所述,使用<code>corr</code>比较同一数据帧中的数字列。将自动跳过非数值列。</p>
<pre><code>df1.corr()
a b
a 1.000000 -0.840475
b -0.840475 1.000000
</code></pre>
<p>可以将df1&df2的列与<code>corrwith</code>进行比较。请注意,只有名称相同的列才会进行比较:</p>
<pre><code>df1.corrwith(df2)
a 0.993085
b NaN
c NaN
</code></pre>
<p><strong>其他选项:</strong></p>
<p>如果希望pandas忽略列名并将df1的第一行与df2的第一行进行比较,则可以将df2的列重命名为与df1的列匹配,如下所示:</p>
<pre><code>df1.corrwith(df2.set_axis( df1.columns, axis='columns', inplace=False))
a 0.993085
b 0.969220
</code></pre>
<p>注意,在这种情况下,df1和df2需要具有相同数量的列。</p>
<p>最后,一种厨房水槽方法:您还可以简单地水平连接两个数据集,然后使用<code>corr()</code>。其优点是,不管列的数量和命名方式如何,这基本上都是可行的,但缺点是,您可能获得的输出比您想要或需要的多:</p>
<pre><code>pd.concat([df1,df2],axis=1).corr()
a b a c
a 1.000000 -0.840475 0.993085 -0.681203
b -0.840475 1.000000 -0.771050 0.969220
a 0.993085 -0.771050 1.000000 -0.590545
c -0.681203 0.969220 -0.590545 1.000000
</code></pre>