我正在寻找一个使用容差比较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