擅长:python、mysql、java
<p>有一种方法:</p>
<pre><code>df
a b
0 1 999
1 2 3
2 3 345
3 56 8
4 7 54
df_b
a b
0 1 111
1 2 3
2 3 345
3 56 8
4 7 54
</code></pre>
<p>比较:</p>
^{pr2}$
<p>在函数中:</p>
<pre><code>def numberOfDifferencess(df1, df2):
return df1.count().sum() - (df1 == df2).astype(int).sum().sum()
</code></pre>
<p>本质上,<code>(df == df_b).astype(int).sum().sum()</code>将汇总两个数据帧之间的重叠(一个字段中的字段等于另一个数据帧中的字段)。在</p>
<p><strong>快速测试</strong></p>
<pre><code>df1 = pd.DataFrame(np.random.randint(0, 100, size = (1000,1000)))
df2 = pd.DataFrame(np.random.randint(0, 100, size = (1000,1000)))
%timeit numberOfDifferencess(df1, df2)
%timeit number_of_diff(df1, df2) # using spies006 function for comparison (see below)
10 loops, best of 3: 20.6 ms per loop
1 loop, best of 3: 428 ms per loop
</code></pre>
<p>毫不奇怪,这种方法是理想的。迭代数据帧通常不是最有效的方法。在</p>