2015-11-05 18 views
7

同一でなければならない2つのデータフレームを比較したいと考えています。しかし、浮動小数点精度のため、値が一致しないと言われています。私は下でそれをシミュレートする例を作成しました。最終的な比較データフレームが両方のセルでtrueを返すように、正しい結果を得るにはどうすればよいですか?あなたはこのためnp.iscloseを使用することができますパンダのデータフレームの比較と浮動小数点の精度

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:

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

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

np.iscloseは、相対許容誤差と絶対許容値をとります。これらはデフォルト値を持っています:rtol=1e-05atol=1e-08それぞれ

+0

これは完璧です、ありがとう@EdChum。元の等価チェックと同じタイプのデータフレームの結果を得るために参照してください: 'print pd.DataFrame(np.isclose(a、b)、columns = a.columns、index = a.index)' A 0 True 1 True – PH82

関連する問題