python-3.x - 使用 jellyfish 包在 Pyspark 数据框中创建分数列
问题描述
我有一个这样的数据框
df = [id1, id2, name1, name2, address1, address2, DOB1, DOB2]
我想获得Pyspark DataFrame中 column1 和 column2 的 Jaro_winkler 分数(在新列中)。我正在尝试使用jellyfish python 包。
谢谢
解决方案
此响应主要源于在此处查看 StackOverflow 中的类似问题。在他们的示例中,他们研究了在运行 jellyfish 字符串比较时如何处理空值。
您需要设置一个 UDF 调用来利用 pyspark 的并行处理能力。请参见下面的代码:
from pyspark.sql.functions import udf
from pyspark.sql.functions import col
from pyspark.sql.types import DoubleType
import jellyfish
# initiate user defined function (UDF) call.
@udf(DoubleType())
def jaro_winkler(s1, s2):
return jellyfish.jaro_winkler(s1, s2)
# to create a new column
df = df.withColumn('new_column',jaro_winkler(col('column1'),col('column2')))
# to show top 20 results
df.select('new_column').show()
对于具有处理空值选项的类似功能,我建议更改您的函数以包含以下更改:
@udf(DoubleType())
def jaro_winkler(s1, s2):
if s1 is None or s2 is None:
out = 0
else:
out = jellyfish.jaro_winkler(s1, s2)
return out
推荐阅读
- gatsby - Algolia 未能在 netlify deploy 上建立索引
- html - 如何让 flex-grow 忽略填充?
- java - java spring 的 TLS
- excel - 基于多个单元格交集的文本框值
- docker - 与 docker 1.7.0 一起使用的 docker-compose 的确切版本是什么?
- dialogflow-es - 在对话流中从一个意图重定向到另一个意图
- android - 广播接收器在 Android 中不起作用
- python - 用数据集中正确的国家名称替换错误的国家名称
- reactjs - 带有 cookie 的 HOC 私有路由上的 nextjs 9.4 错误
- reactjs - Moment js,React:月份渲染问题