在同一数据框中的两个字符串列中创建具有模糊分数的新列
Create new column with fuzzy-score across two string columns in the same dataframe
我正在尝试计算同一数据框中两列的模糊分数(最好是 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)
但是问题已经从代码的第一行开始 returns 以下错误通知:
Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
你可以说我有点被困在这里,所以任何关于这方面的建议都将不胜感激!
您需要一个 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|
+-----------+-----------+-------------+
我正在尝试计算同一数据框中两列的模糊分数(最好是 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)
但是问题已经从代码的第一行开始 returns 以下错误通知:
Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressions.
你可以说我有点被困在这里,所以任何关于这方面的建议都将不胜感激!
您需要一个 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|
+-----------+-----------+-------------+