2015-11-05 17 views
7

मैं दो डेटाफ्रेम की तुलना करना चाहता हूं जो समान होना चाहिए। हालांकि फ्लोटिंग पॉइंट परिशुद्धता के कारण मुझे बताया जा रहा है कि मूल्य मेल नहीं खाते हैं। मैंने इसे अनुकरण करने के लिए एक उदाहरण बनाया है। मैं सही परिणाम कैसे प्राप्त कर सकता हूं ताकि अंतिम तुलना डेटाफ्रेम दोनों कोशिकाओं के लिए सच हो सके?पांडस डेटाफ्रेम तुलना और फ़्लोटिंग प्वाइंट प्रेसिजन

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

ठीक आप इस के लिए 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। डेटाफ्रेम परिणाम प्राप्त करने के संदर्भ में मूल समानता जांच के समान प्रकार के रूप में मैंने किया: 'प्रिंट पीडी। डेटाफ्रेम (एनपी.इस्क्लोज़ (ए, बी), कॉलम = ए.columns, index = a.index)' ए 0 सही 1 सत्य – PH82

संबंधित मुद्दे