需要在Python或SQL Server中使用Levenshtein,尝试比较两个不同表中的列的帮助吗

2024-06-10 12:39:37 发布

您现在位置:Python中文网/ 问答频道 /正文

为了提供一点背景信息,我们列出了一个我们试图瞄准的潜在客户列表

我试图将驻留在此目标客户机数据库中的名称与当前现有客户机进行比较

我想首先获得所有匹配姓名的列表(潜在客户列表中已经存在于数据库中的姓名)。但是,由于拼写上的细微差异,例如(“Mike R。Lowry“vs”Mike Lowry”)我们使用的是Levenshtein方法

所以我有:

  1. 表1=目标潜在客户(此处1列为全名)
  2. 表2=已经与我们在一起的客户(此处1列为全名)

我尝试使用FuzzyWzzy在Python中实现这一点。以下是我的尝试:

import pandas as pd
from fuzzywuzzy import process, fuzz

prospects = pd.read_csv(r'C:\Users\123\Downloads\prospects.csv')
ourclients = pd.read_csv(r'C:\Users\123\Downloads\ourclients.csv')

actual = []
similarity = []
for i in prospects.fullname.astype(str):
        ratio = process.extract( i, ourclients.Names.astype(str), limit=1)
        actual.append(ratio[0][0])
        similarity.append(ratio[0][1])
ourclients['actual'] = pd.Series(actual)
ourclients['similarity'] = pd.Series(similarity)
hr.head(3)

然而,这需要很长时间,并且不断地给我带来不同类型的错误。首先是字符串错误,所以我将astype(str)应用于prospects.fullname,使其成为“prospects.fullname.astype(str)”,如上所示。我很难做到这一点,因为我在运行逻辑后不断出现错误,但每次运行我都要等待1个多小时

有更好的方法吗?我也愿意在SQLServer中使用Levenshtein function来实现这一点。然而,我看到的所有示例都只使用特定的字符串输入。我不知道如何编写逻辑来使用Levenshtein对照表2中的列检查表1中的列

任何帮助或指导都将不胜感激!谢谢大家!


Tags: csv目标列表客户错误levenshteinpdratio