python - Jupyter notebook 不会运行带有模糊模糊功能的模糊匹配单元
问题描述
我正在尝试使用编写函数的fuzzywuzzy包使用模糊匹配加入几个数据集:
这是我拥有的代码:
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 行。关于为什么它适用于小集合而不是产生上述错误的较大集合的任何想法?
谢谢!!
解决方案
无法看到数据集,我会假设您正在处理一些不太干净的数据。您是否尝试检查数据集中的 N/A 或错误输入的值(例如)布尔值/整数?
推荐阅读
- django - __init__() 有多个参数值试图覆盖 forms.Form
- python - Selenium Python 按名称查找元素不起作用
- git - 如何从变基中跳过特定文件
- php - 如何在 TFS 中运行 PHP 脚本?在 TFS 中是否可以通过命令行运行 PHP 脚本?
- android - 使用 Lambda 的 Android 自定义身份验证
- c++ - 标准::地图
::find() 没有找到任何东西 - python - 提高比较 pandas 数据帧行的 for 循环的性能
- php - 获取图像大小会导致 RSS 提要出错
- ruby-on-rails - 为旧版 Rails 应用程序寻找兼容的 Gem 版本
- r - 将 xts 对象列表写入 excel