5

我有两个带有名单的数据框

df1[name]   -> number of rows 3000

df2[name]   -> number of rows 64000

我正在使用模糊 wuzzy 使用以下代码从 df2 获取 df1 条目的最佳匹配:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

matches = [process.extract(x, df1, limit=1) for x in df2]

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

4

2 回答 2

4

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

matches = (process.extract(x, df1, limit=1) for x in df2)

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

于 2017-08-16T04:40:39.747 回答
0

您可以使用 python 的多线程包来加速它。Pandas 默认不使用多核。

于 2017-08-16T03:55:58.817 回答