Pandas Dataframe Comparison and Floating-Point Accuracy

I want to compare two frames of data that should be identical. However, due to floating point accuracy, they tell me that the values ​​do not match. I created an example to simulate it below. How can I get the correct result so that the final comparison data file returns true for both cells?

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 
+7
python pandas
source share
1 answer

OK you can use np.isclose for this:

 In [250]: np.isclose(a,b) Out[250]: array([[ True], [ True]], dtype=bool) 

np.isclose accepts relative tolerance and absolute tolerance. They have default values: rtol=1e-05 , atol=1e-08 respectively

+9
source share

All Articles