单元测试 Pandas DataFrame

Unit Testing Pandas DataFrame

我正在开发一个单元测试,它比较两个 DataFrame 和 returns 如果它们的长度相同则为真,如果不相同则 returns 长度差异以及缺失的内容输出行是。

例如: 示例 1:

df1 = {0,1,2,3,4}
df2 = {0,1,2,3,4}

True

示例 2:

df1 = {0,1,2,3,4}
df2 = {0,2,3,4}

False. 2 is missing.

通知我 df2 中缺少 df1 中的第二项。

这有可能吗?

查看 pd.util.testing

对于您的问题,您可以 pd.util.testing.assert_equal(df1, df2)

我认为首先你必须决定你想要什么:单元测试或 returns 两个数据帧之间差异的函数。

如果是前一种情况,你可以使用pd.util.testing.assert_frame_equal:

first = pd.DataFrame(np.arange(16).reshape((4,4)), columns=['A', 'B', 'C', 'D'])
first['A'][0] = 99
second = pd.DataFrame(np.arange(16).reshape((4,4)), columns=['A', 'B', 'C', 'D'])

pd.util.testing.assert_frame_equal(first, second)

如果您的 DataFrame 不同,您将收到断言错误

AssertionError: DataFrame.iloc[:, 0] are different

DataFrame.iloc[:, 0] values are different (25.0 %)
[left]:  [99, 4, 8, 12]
[right]: [0, 4, 8, 12]

在后一种情况下,如果您真的想要一个函数来告诉您缺少多少行以及数据框与另一个数据框的不同之处,那么您正在寻找的不是单元测试。