<p>你可以这样做:</p>
<pre><code>d1 - d2.values
</code></pre>
<p>或者:</p>
^{pr2}$
<p>演示:</p>
<pre><code>In [172]: d1 - d2.values
Out[172]:
x1
0 -0.698132
0 -1.396264
0 -2.094395
1 -2.094395
1 -2.792527
In [173]: d1.x1 - d2.x2.values
Out[173]:
0 -0.698132
0 -1.396264
0 -2.094395
1 -2.094395
1 -2.792527
Name: x1, dtype: float64
</code></pre>
<p>更大DFs的时机:</p>
<pre><code>In [180]: d1 = pd.concat([d1] * 10**5, ignore_index=True)
In [181]: d2 = pd.concat([d2] * 10**5, ignore_index=True)
In [182]: d1.shape
Out[182]: (500000, 1)
In [183]: %timeit pd.DataFrame(d1.values - d2.values, d1.index, ['x1-x2'])
100 loops, best of 3: 4.07 ms per loop
In [184]: %timeit d1 - d2.values
100 loops, best of 3: 3.99 ms per loop
In [185]: d1 = pd.concat([d1] * 10, ignore_index=True)
In [186]: d2 = pd.concat([d2] * 10, ignore_index=True)
In [187]: d1.shape
Out[187]: (5000000, 1)
In [188]: %timeit pd.DataFrame(d1.values - d2.values, d1.index, ['x1-x2'])
10 loops, best of 3: 19.9 ms per loop
In [189]: %timeit d1 - d2.values
100 loops, best of 3: 14 ms per loop
In [190]: %timeit d1.reset_index(drop=True) - d2.reset_index(drop=True)
1 loop, best of 3: 242 ms per loop
In [191]: %timeit d1.reset_index(drop=True).sub(d2.reset_index(drop=True))
1 loop, best of 3: 242 ms per loop
</code></pre>