【发布时间】:2022-01-13 02:14:16
【问题描述】:
我是 python 和数据框的新手。我目前正在尝试将 2 个数据帧与 assert_frame_equal() 函数进行比较。
df1= a b
0 1 3
1 2 4
df2= a b
0 2 3.0
1 2 4.0
代码:
import pandas as pd
from pandas._testing import assert_frame_equal
def test_compare_src_trg():
df1 = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
df2 = pd.DataFrame({'a': [2, 2], 'b': [3.0, 4.0]})
pd.testing.assert_frame_equal(df1, df2)
运行时,断言在第一列失败,因为值“1”不等于“2”,这是正确的。但我希望断言在所有数据帧项目上运行并给出整体通过/失败结果。
----------------------------------
raise AssertionError(msg)
AssertionError: DataFrame.iloc[:, 0] (column name="a") are different
DataFrame.iloc[:, 0] (column name="a") values are different (50.0 %)
[index]: [0, 1]
[left]: [1, 2]
[right]: [2, 2]
Process finished with exit code 1
【问题讨论】:
-
看起来您的代码只是在顶层运行,而不是在测试函数中运行?既然你标记了这个
pytest,只需def test_whatever():就足够了,然后调用pytest来收集并执行它们... -
嗨,我正在使用 def 测试函数进行断言。虽然在函数中有它,但当第一个数据帧值不同时,断言失败。我正在寻找的是运行所有断言,尽管它在第一个值处失败。
标签: python pandas pytest assert assertion