python - Pandas 单元测试 : How to assert equality of NaT and NaN values?

标签 python unit-testing pandas numpy nan

在 NumPy 和 Pandas 中,nan != nanNaT != NaT。因此,在单元测试期间比较结果时,我如何断言返回值是这些值之一?一个简单的 assertEqual 自然会失败,即使我使用 pandas.util.testing

最佳答案

如果您要比较标量,一种方法是使用 assertTrueisnull。例如,在 DataFrame 单元测试 (pandas/tests/test_frame.py) 中,您可以找到 tests such as this :

self.assertTrue(com.isnull(df.ix['c', 'timestamp']))

(compandas/core/common.py 的别名,因此 com.isnull 调用与 相同的底层函数>pd.isnull.)

另一方面,如果您将 Series 或 DataFrame 与 null 值进行相等性比较,这些将由 tm.assert_series_equaltm.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_equalNaN 处理为等于自身:

>>> 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/

相关文章:

python - RuntimeError:OrderedDict在迭代过程中发生了突变(Python3)

android - 是否可以使用 junit 测试来测试本地值?

Python比较2个列表和2个元组与等号

javascript - 提取脚本标签内的JS变量信息

xcode - 为什么右大括号显示没有代码覆盖?

java - 对 Hibernate 驱动的应用程序进行单元测试?

python - 迭代 Excel 文件,向系列添加列,并使用 Panda 库保存结果

python - 如何在通过 rpy 将 SPSS 文件(.sav)导入 pandas 时保留标签?

python - Pandas:列和索引之间的多索引应用功能

python - 满足条件时关闭程序