Ber*_*pac 5 python unit-testing numpy nan pandas
在NumPy和Pandas,nan != nan和NaT != NaT.因此,在单元测试期间比较结果时,如何断言返回值是其中一个值?assertEqual即使我使用,简单自然也会失败pandas.util.testing.
如果你比较标量,一个方法是使用assertTrue与isnull.例如,在DataFrame单元tests(pandas/tests/test_frame.py)中,您可以找到如下测试:
self.assertTrue(com.isnull(df.ix['c', 'timestamp']))
Run Code Online (Sandbox Code Playgroud)
(com是一个别名pandas/core/common.py,因此com.isnull调用相同的底层函数pd.isnull.)
另一方面,如果您将Series或DataFrames与null值进行比较以获得相等性,则会由tm.assert_series_equal和自动处理tm.assert_frame_equal.例如:
>>> import pandas.util.testing as tm
>>> df = pd.DataFrame({'a': [1, np.nan]})
>>> df
a
0 1
1 NaN
Run Code Online (Sandbox Code Playgroud)
通常,NaN不等于NaN:
>>> df == df
a
0 True
1 False
Run Code Online (Sandbox Code Playgroud)
但assert_frame_equal过程NaN与自身相同:
>>> tm.assert_frame_equal(df, df)
# no AssertionError raised
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4477 次 |
| 最近记录: |