如何解决将值与 pyspark 中的特定误差范围进行比较
有没有办法比较 pyspark 中 double
类型的两个值,并具有指定的误差幅度?
本质上与此 post 类似,但在 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"))
但以更优雅的方式?
解决方法
您可以使用 between
作为条件:
df2 = df.withColumn(
'compare',when(
col('RESULT1').between(0.95*col('RESULT2'),1.05*col('RESULT2')),lit("match")
).otherwise(
lit("no match")
)
)
,
你也可以写成 |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"))
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。