首页 > 解决方案 > Jupyter notebook 不会运行带有模糊模糊功能的模糊匹配单元

问题描述

我正在尝试使用编写函数的fuzzywuzzy包使用模糊匹配加入几个数据集:

是否可以与 python pandas 进行模糊匹配合并?

这是我拥有的代码:

import pandas as pd
from fuzzywuzzy import fuzz
from fuzzywuzzy import process

blanks = pd.read_csv("names_blank_type.csv")
mapping = pd.read_csv("TYPE-MAP.csv")

blanks = pd.DataFrame(blanks)

blanks = blanks.drop(blanks.columns[[0,1]], axis=1) 

mapping = pd.DataFrame(mapping)

mapping = mapping.drop(mapping.columns[[2]], axis=1) 

blanks_smaller = blanks.head(100)
mapping_smaller = mapping.head(100)

def fuzzy_merge(df_1, df_2, key1, key2, threshold=90, limit=2):

    s = df_2[key2].tolist()
    
    m = df_1[key1].apply(lambda x: process.extract(x, s, limit=limit))    
    df_1['matches'] = m
    
    m2 = df_1['matches'].apply(lambda x: ', '.join([i[0] for i in x if i[1] >= threshold]))
    df_1['matches'] = m2
    
    return df_1

fuzzy_merge(mapping_smaller, blanks_smaller, str('company_name'), str('company_name'), threshold=80)

如果我只使用mapping_smaller 和blanks_smaller,则fuzzy_merge 函数实际上可以工作,但是如果我尝试使用完整的数据集,则会出现以下错误:

在此处输入图像描述

完整的空白数据集有不到 350,000 行,而完整的映射集有不到 100,000 行。关于为什么它适用于小集合而不是产生上述错误的较大集合的任何想法?

谢谢!!

标签: pythonpandasfuzzywuzzy

解决方案


无法看到数据集,我会假设您正在处理一些不太干净的数据。您是否尝试检查数据集中的 N/A 或错误输入的值(例如)布尔值/整数?


推荐阅读