`assert_frame_equal`和`equals`有什么区别?

Moh*_* ah 6 python testing pandas

我很想知道assert_frame_equal和之间的区别equal.两者都用于检查两个数据的相等性.它适用于assert_series_equalassert_index_equal.那么equals和测试函数有什么区别?

到目前为止,我发现测试函数提供了更多的灵活性来比较值,如check_dtpye选项等,并且与返回值不同这是它们之间的唯一区别吗?

或者,我应该何时使用equals方法以外的测试功能?

df1=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10]})
df2=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10]})
pd.testing.assert_frame_equal(df1,df2)
print df1.equals(df2)

pd.testing.assert_series_equal(df1['a'],df2['a'])
print df1['a'].equals(df2['a'])

pd.testing.assert_index_equal(df1.index,df2.index)
print df1.index.equals(df2.index)
Run Code Online (Sandbox Code Playgroud)

cs9*_*s95 11

assert_frame_equalAssertionError当两个DataFrame不相等时抛出一个.

>>> pd.testing.assert_frame_equal(df1, df2)
>>> pd.testing.assert_frame_equal(df1, pd.DataFrame())
AssertionError       
Run Code Online (Sandbox Code Playgroud)

DataFrame.equals 只返回一个布尔值True/False.

>>> df1.equals(df2)
True
>>> df1.equals(pd.DataFrame())
False    
Run Code Online (Sandbox Code Playgroud)

对于定义的其他函数也是如此pd.testing,它们用于开发pandas代码的单元测试.

  • 感谢您的回答。为了找到两个数据帧的相等性,我可以使用 equals,但是我什么时候应该使用测试函数?在哪个阶段我应该应用测试功能而不是等于?请清除我我真的不明白区别+1 :) (2认同)
  • @MohamedThasinah为了澄清(也许我不清楚),您使用断言函数,主要是在为自己的代码编写单元测试用例时,当您宁愿抛出 AssertionError (并使测试失败)而不是查询的值时布尔结果。这几乎是一个惯例问题。 (2认同)