作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 unittest
模块检查两个 pandas.Series
对象是否具有相同的内容:
self.assertSequenceEqual(
df['some_column'],
someOtherSeries)
根据 unittest
文档,上述内容应该有效(基于 the docs )。但是,当我运行上述单元测试时,我得到以下结果:
======================================================================
ERROR: test_my_test (my_module.test.test_my_module.SimpleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/root/src/my_module/my_module/test/test_my_test.py", line 28, in test_my_test
someOtherSeries)
File "/usr/local/lib/python2.7/unittest/case.py", line 663, in assertSequenceEqual
if seq1 == seq2:
File "/usr/local/lib/python2.7/site-packages/pandas/core/generic.py", line 917, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
如何测试Series是否相同?
请注意,将 Series 转换为 list
对象似乎可以解决此问题,但感觉像是一种黑客攻击:
self.assertSequenceEqual(
list(df['some_column']),
list(someOtherSeries))
最佳答案
请注意,df['some_column'].values
是一个 numpy
数组。要测试 numpy 数组的相等性(o 等价性),您可以使用 numpy.testing
:
from numpy import testing
testing.assert_array_equal(df['some_column'].values, someOtherSeries.values)
如果数组是浮点型,则应考虑 numpy.testing.assert_almost_equal
testing.assert_almost_equal(df['some_column'].values, someOtherSeries.values)
因为直接等于 float 是有问题的。
关于python - 如何将assertSequenceEqual与pandas系列一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50036136/
我是一名优秀的程序员,十分优秀!