大Pandas模糊串匹配的快速方法

2024-04-29 10:09:52 发布

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

有没有什么方法可以在熊猫中使用fuzzyfuzzy来加速模糊字符串匹配。在


我有一个名为extra_names的数据帧,它的名称我想与另一个数据帧names_df运行模糊匹配。在

>> extra_names.head()

     not_matching
0 Vij Sales
1 Crom Electronics 
2 REL Digital
3 Bajaj Elec
4 Reliance Digi

>> len(extra_names)
6500

>> names_df.head()

         names   types
0 Vijay Sales        1
1 Croma Electronics  1
2 Reliance Digital   2
3 Bajaj Electronics  2
4 Pai Electricals    2

>> len(names_df)
250

到目前为止,我正在使用下面的代码运行逻辑,但是要花很长时间才能完成。在

^{pr2}$

当我发布这个问题时,查询仍在运行。有什么方法可以加快这个模糊字符串匹配的过程吗?在


Tags: 数据方法字符串名称dflennamesextra
1条回答
网友
1楼 · 发布于 2024-04-29 10:09:52

让我们试试difflib

import difflib
from functools import partial

f = partial(
    difflib.get_close_matches, possibilities=names_df['names'].tolist(), n=1)

matches = extra_names['not_matching'].map(f).str[0].fillna('')
scores = [
    difflib.SequenceMatcher(None, x, y).ratio() 
    for x, y in zip(matches, extra_names['not_matching'])
]

extra_names.assign(best=matches, score=scores)

       not_matching               best     score
0         Vij Sales        Vijay Sales  0.900000
1  Crom Electronics  Croma Electronics  0.969697
2       REL Digital   Reliance Digital  0.666667
3        Bajaj Elec  Bajaj Electronics  0.740741
4     Reliance Digi   Reliance Digital  0.896552

相关问题 更多 >