【问题标题】:Unit Testing Pandas DataFrame单元测试 Pandas DataFrame
【发布时间】:2017-07-19 18:55:38
【问题描述】:

我正在开发一个单元测试,它比较两个 DataFrame,如果它们的长度相同则返回 True,否则返回长度差异以及缺少的输出行是什么。

例如: 示例 1:

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

是的

示例 2:

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

错误。 2 不见了。

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

这是可能的吗?

【问题讨论】:

    标签: python unit-testing pandas dataframe diff


    【解决方案1】:

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

    如果是前一种情况,你可以使用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)
    

    如果你的DataFrames 不同,你会得到一个断言错误

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

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

    【讨论】:

      【解决方案2】:

      查看 pd.util.testing

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

      【讨论】:

        猜你喜欢
        • 2018-04-11
        • 1970-01-01
        • 2021-03-30
        • 2021-01-15
        • 2021-11-14
        • 2016-01-06
        • 2014-04-04
        • 1970-01-01
        • 2013-12-10
        相关资源
        最近更新 更多