如何在pyspark的数据帧上使用fuzz.ratio

时间:2020-06-30 09:30:29

标签: dataframe pyspark fuzzywuzzy

我想在数据帧上使用fuzz.ratio,但是我正在pyspark上工作(我不能使用熊猫)。

我具有以下功能:

from fuzzywuzzy import fuzz

我创建一个像这样的数据框:

communes_corrompues=spark.createDataFrame(
[("VILLEAINTE", "VILLEPINTE"),
('QILLEPINTE'   ,'VILLEPINTE'),
('AHIENS'   ,'AMIENS'),
('AMIEPS'   ,'AMIENS'),
("CVRGY"    ,"CERGY"),
("CERGA"    ,"CERGY")
 ],
    ['corrompue', 'resultat']
)

这句话不起作用:

communes_corrompues_ratio = communes_corrompues.withColumn("fuzzywuzzy_ratio",
lit(fuzz.ratio(col("resultat"),col("corrompue"))))

我有此错误:

ValueError:无法将列转换为布尔值:请使用'&' “和”,“ |”构建DataFrame布尔值时为'or',为'〜'为'not' 表达式。

有人可以帮助我吗?还是知道该怎么做?

1 个答案:

答案 0 :(得分:0)

我会为此尝试用户定义的功能,

from pyspark.sql.functions import udf
from fuzzywuzzy import fuzz

@udf("int")
def fuzz_udf(a,b):
  return fuzz.ratio(a,b)

communes_corrompues_ratio.withColumn("fuzzywuzzy_ratio", fuzz_udf(col("resultat"),col("corrompue")).show()