如何检查2个DataFrames是否接近?(不平等)



我正在寻找一个使用容差比较2 df的函数。例如:

df1.a = [1,2]
df2.a = [2,2]

我想定义公差=2并接收输出,使得compare_df_func(df1,df2, tolerance = 2)为True。pd.equals没有容错功能,也可以合并。我想使用indicator=True的merge,这样我就可以看到哪些行只存在于每个df上,但它没有容差功能
merge_asof确实有,但它只针对左合并实现,我正在寻找一个外部合并。

我可以在每一列中使用Numpy"isclose"函数,但我希望找到一个pandas函数/完整df之间的有效比较。你有什么建议?

原始答案:

np.all(np.isclose(df1.as_matrix(),df2.as_matrix(),atol=1))

事实上,pandas.DataFrame.as_matrix()从0.23.0版本开始就被取消了。建议改用.to_numpy()(请参阅文档(。

np.all(np.isclose(df1.to_numpy(), df2.to_numpy(), atol=1))

使用np.allclose((比较序列。此处也显示。

s1 = pd.Series([1,2])
s2 = pd.Series([2,2])
np.allclose(s1, s2, atol=1)
>> True

最新更新