这是一种方法:
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
比较:
df.count().sum() - (df == df_b).astype(int).sum().sum()
1
在一个函数中:
def numberOfDifferencess(df1, df2):
return df1.count().sum() - (df1 == df2).astype(int).sum().sum()
基本上(df == df_b).astype(int).sum().sum()
将计算出两个数据框之间的重叠部分(一个字段等于另一个字段)。
快速速度测试
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)
10 loops, best of 3: 20.6 ms per loop
1 loop, best of 3: 428 ms per loop
毫不奇怪,这种方法是理想的。遍历数据框通常不是最有效的方法。