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

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

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

df=#some dataframe with 2 columns RESULT1 and RESULT2

df=withColumn('compare', when(col('RESULT1')==col('RESULT2') +/- 0.05*col('RESULT2'), lit("match")).otherwise(lit("no match"))

但以一种更优雅的方式?

rfbsl7qr

rfbsl7qr1#

你可以用 between 作为条件:

df2 = df.withColumn(
    'compare',
    when(
        col('RESULT1').between(0.95*col('RESULT2'), 1.05*col('RESULT2')), 
        lit("match")
    ).otherwise(
        lit("no match")
    )
)
j0pj023g

j0pj023g2#

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

from pyspark.sql import functions as F

df1 = df.withColumn(
    'compare',
    F.when(
        F.abs(F.col('RESULT1') - F.col("RESULT2")) <= 0.05 * F.col("RESULT2"),
        F.lit("match")
    ).otherwise(F.lit("no match"))
)

相关问题