在 NumPy 和 Pandas 中,nan != nan
和 NaT != NaT
。因此,在单元测试期间比较结果时,我如何断言返回值是这些值之一?一个简单的 assertEqual
自然会失败,即使我使用 pandas.util.testing
。
最佳答案
如果您要比较标量,一种方法是使用 assertTrue
和 isnull
。例如,在 DataFrame 单元测试 (pandas/tests/test_frame.py
) 中,您可以找到 tests such as this :
self.assertTrue(com.isnull(df.ix['c', 'timestamp']))
(com
是 pandas/core/common.py
的别名,因此 com.isnull
调用与 相同的底层函数>pd.isnull
.)
另一方面,如果您将 Series 或 DataFrame 与 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
通常,NaN
不等于NaN
:
>>> df == df
a
0 True
1 False
但是 assert_frame_equal
将 NaN
处理为等于自身:
>>> tm.assert_frame_equal(df, df)
# no AssertionError raised
关于python - Pandas 单元测试 : How to assert equality of NaT and NaN values?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32524084/