在 pandas 数据框中模糊匹配两个字符串的最快方法

kun*_*eep 6 python entityresolver pandas fuzzywuzzy jupyter-notebook

我有两个带有姓名列表的数据框

df1[name]   -> number of rows 3000

df2[name]   -> number of rows 64000
Run Code Online (Sandbox Code Playgroud)

我使用 fuzzy wuzzy 使用以下代码从 df2 中获取 df1 条目的最佳匹配:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

matches = [process.extract(x, df1, limit=1) for x in df2]
Run Code Online (Sandbox Code Playgroud)

但这需要很长时间才能完成。有没有更快的方法来对 pandas 中的字符串进行模糊匹配?

Ent*_*ast 5

我在代码中看到的一项改进是使用生成器,因此您可以使用圆括号代替方括号。它将提高数倍的速度。

matches = (process.extract(x, df1, limit=1) for x in df2)
Run Code Online (Sandbox Code Playgroud)

编辑:还有一个建议,我们可以与库并行操作multiprocessing