【发布时间】:2020-08-20 19:22:29
【问题描述】:
我必须编写单元测试来比较我的代码的输出,为此我必须比较两个包含浮点数的 pyspark 数据帧。
当我尝试将它们与assetEquals进行比较时,它会说相应的值不匹配,这主要是浮点比较的问题,我想在这里使用np.isclose之类的东西,但我不确定如何,因为np.isclose isclose 不适用于我的情况。考虑下面的例子:
df1 =[
{
"customer_id": "1",
"e0": 1.1,
"e1": 2.2,
"e2": 3.3,
"e3": 0.0,
}
]
df2 = [
{
"customer_id": "1",
"e0": 1.100000000121,
"e1": 2.1999999999012,
"e2": 3.3,
"e3": 0.0,
}
]
assertEquals(df1, df2).
我希望这两个 dfs 最多在小数点后 5 位进行比较,但不知道如何做到这一点。
【问题讨论】:
-
您可以使用 Double 类型对列进行四舍五入并比较这些数据框。 spark.apache.org/docs/latest/api/python/… 你也可以使用内置函数
except_all(except用于 scala)。它将满足您的需求。
标签: python pyspark apache-spark-sql