Pandas Dataframe 比较和浮点精度

iih3973s  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(292)

我希望比较两个应该相同的 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
kiz8lqtg

kiz8lqtg1#

可以使用np.isclose执行以下操作:

In [250]:
np.isclose(a,b)

Out[250]:
array([[ True],
       [ True]], dtype=bool)

np.isclose取相对容差和绝对容差,默认值为:分别为rtol=1e-05atol=1e-08

9gm1akwq

9gm1akwq2#

你可以使用Pandas内置的assert_frame_equal,它会自动对浮点列执行numpy isclose(),优点是你可以传递一个混合列类型的完整 Dataframe 。
有关微调,请参阅参数rtol和atol。

from pandas.testing import assert_frame_equal

assert_frame_equal(df1, df2)

相关问题