2015-11-05 89 views
7

我期待比較兩個應該相同的數據幀。但由於浮點精度,我被告知值不匹配。我已經創建了一個例子來模擬它。我怎樣才能得到正確的結果,以便兩個單元格的最終比較數據框都返回true?熊貓數據幀比較和浮點精度

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 

回答

9

OK,你可以使用np.isclose此:

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

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

np.isclose取得相對寬容和絕對容差。這些都有默認值:rtol=1e-05,atol=1e-08分別爲

+0

這是完美的,謝謝@EdChum。爲了得到一個數據結果的結果,與我做的原始相等性檢查相同的類型: 'print pd.DataFrame(np.isclose(a,b),columns = a.columns,index = a.index)' A 0 True 1 True – PH82