【问题标题】:Jupyter notebook won't run fuzzy matching cell with fuzzywuzzy functionJupyter notebook 不会运行带有模糊模糊功能的模糊匹配单元
【发布时间】:2021-10-11 17:20:02
【问题描述】:

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

is it possible to do fuzzy match merge with 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 行。关于为什么它适用于小集合而不是产生上述错误的较大集合的任何想法?

谢谢!!

【问题讨论】:

    标签: python pandas fuzzywuzzy


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 1970-01-01
      • 2016-02-11
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多