我希望比较两个应该相同的 Dataframe 。但是由于浮点精度,我被告知值不匹配。我在下面创建了一个示例来模拟它。我如何才能获得正确的结果,以便最终比较 Dataframe 为两个单元格返回真?
a = pd.DataFrame({'A':[100,97.35000000001]})
b = pd.DataFrame({'A':[100,97.34999999999]})
print a
A
0 100.00
1 97.35
print b
A
0 100.00
1 97.35
print (a == b)
A
0 True
1 False
2条答案
按热度按时间kiz8lqtg1#
可以使用
np.isclose
执行以下操作:np.isclose
取相对容差和绝对容差,默认值为:分别为rtol=1e-05
、atol=1e-08
9gm1akwq2#
你可以使用Pandas内置的assert_frame_equal,它会自动对浮点列执行numpy isclose(),优点是你可以传递一个混合列类型的完整 Dataframe 。
有关微调,请参阅参数rtol和atol。