遍历两列字符串并返回熊猫中的最高“模糊比”分数

时间:2019-09-04 16:16:13

标签: python pandas itertools fuzzywuzzy

我正在尝试遍历潜在客户名称的列,以与当前客户名称的列进行比较。问题在于名称不一定相同,因此我想用“模糊比率”得分为每次迭代得分(请参见此处:https://github.com/seatgeek/fuzzywuzzy

我的数据集足够大,以至于我使用的方法崩溃了。

当前,我正在使用列表中可能出现的每个版本创建数据框,最终可能看起来像这样:

[('Indiana Farm Bureau, Inc.', 'Tao Vega'),
 ('Indiana Farm Bureau, Inc.', 'A & J REWALD SCHOL TR MAIN'),
 ('Indiana Farm Bureau, Inc.', 'Acova Health'),
   ...
]

无论如何,我将这个巨大的列表导入到一个新的数据框中,然后遍历整个列表,计算每个点的模糊率,然后对整个数据框进行排序,使最大值位于顶部,并删除得分较低的重复项。

这个过程似乎给内存带来了沉重的负担,尽管它在处理少量数据时却在大型数据集上崩溃。

companies = list(itertools.product(mmd, clients))

df = pd.DataFrame(companies, columns=['MMD', 'Clients'])

df['Ratio Score'] = df.apply(lambda row: fuzz.ratio(*row), axis=1)

df = df.sort_values('Ratio Score', ascending=False).drop_duplicates('MMD').sort_index().reset_index(drop=True)

也许我应该只存储最高的模糊比得分,或者对于每个变量(在上面的示例中,例如“ Indiana Farm Bureau,Inc”)在继续进行下一阶段之前都会删除除最大值以外的所有内容。

我正在尝试将此过程包含在大熊猫中,但不以提高效率为代价。希望使用具有正确功能的apply方法仍然合适。

0 个答案:

没有答案