将值与pyspark中的特定误差范围进行比较

xdyibdwo  于 2021-07-13  发布在  Spark
关注(0)|答案(2)|浏览(469)

有没有办法比较两个类型的值 double 在pyspark中,有指定的误差范围吗?基本类似于这篇文章,但在pyspark。
比如:

  1. df=#some dataframe with 2 columns RESULT1 and RESULT2
  2. df=withColumn('compare', when(col('RESULT1')==col('RESULT2') +/- 0.05*col('RESULT2'), lit("match")).otherwise(lit("no match"))

但以一种更优雅的方式?

rfbsl7qr

rfbsl7qr1#

你可以用 between 作为条件:

  1. df2 = df.withColumn(
  2. 'compare',
  3. when(
  4. col('RESULT1').between(0.95*col('RESULT2'), 1.05*col('RESULT2')),
  5. lit("match")
  6. ).otherwise(
  7. lit("no match")
  8. )
  9. )
j0pj023g

j0pj023g2#

你也可以这样写 |RESULT1 - RESULT2| <= 0.05 * RESULT2 :

  1. from pyspark.sql import functions as F
  2. df1 = df.withColumn(
  3. 'compare',
  4. F.when(
  5. F.abs(F.col('RESULT1') - F.col("RESULT2")) <= 0.05 * F.col("RESULT2"),
  6. F.lit("match")
  7. ).otherwise(F.lit("no match"))
  8. )

相关问题