我正在尝试计算同一数据帧中两列的模糊得分(最好为partial_ratio得分)。
| column1 | column2|
| -------- | -------------- |
| emmett holt| holt
| greenwald| christopher
它需要看起来像这样:
| column1 | column2|partial_ratio|
| -------- | -------------- |-----------|
| emmett holt| holt|100|
| greenwald| christopher|22|
|schaefer|schaefer|100|
在此网站上的另一个问题的帮助下,我致力于以下代码:
compare=pd.MultiIndex.from_product([ dataframe['column1'],dataframe ['column2'] ]).to_series()
def metrics (tup):
return pd.Series([fuzz.partial_ratio(*tup)], ['partial_ratio'])
df['partial_ratio'] = df.apply(lambda x: fuzz.partial_ratio(x['original_title'], x['title']), axis=1)
但是问题已经从返回以下错误通知的代码的第一行开始:
无法将列转换为布尔值:请对“和”,“ |”使用“&” 构建DataFrame布尔表达式时,将'or'表示为'or',将'〜'表示为'not'。
您可以说我有点卡在这里,因此对此提出的任何建议都将不胜感激!
您需要使用UDF才能使用Fuzzywuzzy:
from fuzzywuzzy import fuzz
import pyspark.sql.functions as F
@F.udf
def fuzzyudf(original_title, title):
return fuzz.partial_ratio(original_title, title)
df2 = df.withColumn('partial_ratio', fuzzyudf('column1', 'column2'))
df2.show()
+-----------+-----------+-------------+
| column1| column2|partial_ratio|
+-----------+-----------+-------------+
|emmett holt| holt| 100|
| greenwald|christopher| 22|
+-----------+-----------+-------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句