2015-11-05 21 views
7

Tôi đang tìm cách so sánh hai khung dữ liệu giống hệt nhau. Tuy nhiên do độ chính xác điểm nổi tôi đang được nói với các giá trị không phù hợp. Tôi đã tạo ra một ví dụ để mô phỏng nó dưới đây. Làm thế nào tôi có thể nhận được kết quả chính xác để dataframe so sánh cuối cùng trả về true cho cả hai ô?So sánh dữ liệu so sánh khung hình và độ chính xác của dấu phẩy động

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 

Trả lời

9

OK bạn có thể sử dụng np.isclose cho việc này:

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

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

np.isclose mất dung nạp tương đối và khoan dung tuyệt đối. Các giá trị này có các giá trị mặc định: rtol=1e-05, atol=1e-08 tương ứng

+0

Điều này là hoàn hảo, nhờ @EdChum. Để tham khảo để có được một kết quả dataframe như cùng loại như kiểm tra bình đẳng ban đầu tôi đã làm: 'in pd.DataFrame (np.đóng (a, b), cột = a.columns, index = a.index)' A 0 True 1 True – PH82