2016-08-04 10 views
5

मुझे परीक्षण करना होगा कि दो पांडा डेटाफ्रेम बराबर नहीं हैं। क्या पांडा assert_frame_equal फ़ंक्शन के बराबर है जो यह करता है? यदि नहीं, तो यह कहने का सबसे अच्छा/सुरक्षित तरीका क्या है कि फ्रेम बराबर नहीं हैं?जोर दो फ्रेम्स बराबर नहीं हैं

+0

किस अर्थ में समान है? सभी कोशिकाएं सूचकांक पर विचार करने के बराबर हैं? या क्या उन्हें समान रूप से क्रमबद्ध किया जाना चाहिए? – piRSquared

+1

@piRSquared मुझे विश्वास है कि यह एक इकाई परीक्षण संदर्भ में पूछा जाता है, उदाहरण के लिए, 'pandas.util.testing.assert_frame_equal' –

+0

धन्यवाद @ पॉल, यह बिल्कुल संदर्भ है। – Batman

उत्तर

5

आप assert_frame_equal() का उपयोग करता है और परिणाम उलट अपने स्वयं के दावे समारोह लिख सकता है नहीं कर रहे हैं:

def assert_frame_not_equal(*args, **kwargs): 
    try: 
     assert_frame_equal(*args, **kwargs) 
    except AssertionError: 
     # frames are not equal 
     pass 
    else: 
     # frames are equal 
     raise AssertionError 

यह उसी तर्क का उपयोग करेगा जो assert_frame_equal() डेटा फ्रेम की तुलना करने के लिए उपयोग करता है, इसलिए प्रश्न का समानता क्या है I से बचा है - असमानता केवल assert_frame_equal() निर्धारित करता है जो विपरीत है।

+1

नहीं उठाएगा, यही वह मार्ग है जिसे मैं नीचे जाने के बारे में सोच रहा हूं। मैं बस आश्चर्यचकित था कि इससे पहले हल नहीं किया गया है। – Batman

-1

हाँ है:

# Let us suppose you have two dataframes df1 and df2 
# Check for equality by using 
df1.equals(df2) 

उपयोग not बात पर जोर देना है कि वे बराबर

+0

काफी नहीं है। यह बुलियन के डेटाफ्रेम को वापस कर देगा, न कि स्केलर वैल्यू। इस प्रकार 'is_equal = df1.equals (df2) 'की सत्यता का अर्थ है कि' assert is_equal' कभी भी –

2

मान लिया जाये कि assert_frame_equal बर्ताव assert की तरह (जिसका अर्थ है या तो कुछ नहीं होता है या यह AssertionError को जन्म देती है) तो आप शायद सिर्फ एक try में लपेट कर सकते हैं:

def assert_frame_not_equal(df1, df2): 
    try: 
     assert_frame_equal(df1, df2) 
     raise AssertionError('DataFrames are equal.') 
    except AssertionError: 
     pass 

*args और/या **kwargs जोड़े के रूप में लचीलेपन के लिए वांछित।

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