概述
我有两个大数据集,我已经读入了Pandas数据帧(分别约20K行和约40K行)。当我尝试使用pandas.merge在address字段中直接合并这两个df时,与行数相比,我得到的匹配数微不足道。所以我想我会尝试模糊字符串匹配,看看它是否提高了输出匹配的数量。
为此,我尝试在DF1(20K行)中创建一个新列,这是将DF1[addressline]上的fuzzywuzzy extractone函数应用于DF2[addressline]的结果。我很快意识到,这将需要很长时间,因为它将做接近10亿的比较。
这两个数据集都有“County”字段,我的问题是:是否有方法根据相同的“County”字段在两个df中的“addressline”字段上有条件地进行模糊字符串匹配?研究与我类似的问题,我偶然发现了这个讨论:Fuzzy logic on big datasets using Python
不过,我对如何根据县对字段进行分组/阻塞仍然很模糊(不是双关语)。任何建议都将不胜感激!import pandas as pd
from fuzzywuzzy import process
def fuzzy_match(x, choices, scorer, cutoff):
return process.extractOne(x, choices = choices, scorer = scorer, score_cutoff= cutoff)[0]
test = pd.DataFrame({'Address1':['123 Cheese Way','234 Cookie Place','345 Pizza Drive','456 Pretzel Junction'],'ID':['X','U','X','Y']})
test2 = pd.DataFrame({'Address1':['123 chese wy','234 kookie Pl','345 Pizzza DR','456 Pretzel Junktion'],'ID':['X','U','X','Y']})
test['Address1'] = test['Address1'].apply(lambda x: x.lower())
test2['Address1'] = test2['Address1'].apply(lambda x: x.lower())
test['FuzzyAddress1'] = test['Address1'].apply(fuzzy_match, args = (test2['Address1'], fuzz.ratio, 80))
我添加了两个图像,它们是导入到Excel的两个不同df的示例集。不是所有的字段都包含在内,因为它们对我的问题不重要。为了重申我的最终目标,我希望在其中一个DF中有一个新的列,该列的最大结果是模糊地将地址行与第二个DF中的其他地址行匹配,但仅适用于两个DF之间的县匹配的那些行。从那里我计划合并两个DF,一个在模糊匹配地址上,另一个在第二个DF的地址行列上。希望这听起来不会让人困惑。
最后
以上就是清脆帅哥为你收集整理的python两个excel字段模糊匹配_基于条件python的2个大数据集模糊模糊模糊字符串匹配...的全部内容,希望文章能够帮你解决python两个excel字段模糊匹配_基于条件python的2个大数据集模糊模糊模糊字符串匹配...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复