繁体   English   中英

如何使用断言方法比较python unittest中的2个数据帧

[英]How to compare 2 dataframes in python unittest using assert methods

我正在为返回数据帧的方法编写单元测试,但是,在使用以下方法测试输出时:

self.asserEquals(mock_df, result)

我收到 ValueError:

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

现在我正在比较现在服务于目的的属性,

self.assertEqual(mock_df.size, result.size)
self.assertEqual(mock_df.col_a.to_list(), result.col_a.to_list())
self.assertEqual(mock_df.col_b.to_list(), result.col_b.to_list())
self.assertEqual(mock_df.col_c.to_list(), result.col_c.to_list())

但很好奇我如何断言数据帧。

import unittest
import pandas as pd

class TestDataFrame(unittest.TestCase):
    def test_dataframe(self):
        df1 = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
        df2 = pd.DataFrame({'a': [1, 2], 'b': [3.0, 4.0]})
        self.assertEqual(True, df1.equals(df2))

if __name__ == '__main__':
    unittest.main()

@Mahi 接受的答案对我不起作用。 两个应该相等的数据帧失败了。 不知道为什么。

正如我在“DataFrame 相等性”下发现那样,Pandas 中内置了一些用于测试的功能。

以下对我有用。 我测试了几次,但并不详尽,以确保它可以重复工作。

import unittest
import pandas as pd

class test_something(unittest.TestCase):
    def test_method(self):
        #... create dataframes df1 and df2...
        pd.testing.assert_frame_equal(df1,df2)

是上述功能的相关熊猫参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM