Pandas 协助在两个不同的数据帧中匹配数据

Pandas 协助在两个不同的数据帧中匹配数据,pandas,fuzzy-search,Pandas,Fuzzy Search,我试图在一个较大的主数据帧(n=1400000行)中的一个较小的数据帧(n=3900行)中查找每行数据(基于公司名称和地址)的最接近匹配结果 我使用水母和熊猫软件包在Python中构建了它 但是,虽然代码确实在运行,但需要6个多小时才能完成 有没有人能提供一些加快产出速度的建议 或者说,有没有比使用嵌套的“for”循环更好的替代方法 谢谢这也是我的第一个Python程序 重新导入 进口水母 作为pd进口熊猫 Input=pd.read\u csv('InputData.csv') Match=

我试图在一个较大的主数据帧(n=1400000行)中的一个较小的数据帧(n=3900行)中查找每行数据(基于公司名称和地址)的最接近匹配结果

我使用水母和熊猫软件包在Python中构建了它

但是,虽然代码确实在运行,但需要6个多小时才能完成

有没有人能提供一些加快产出速度的建议

或者说,有没有比使用嵌套的“for”循环更好的替代方法

谢谢这也是我的第一个Python程序

重新导入
进口水母
作为pd进口熊猫
Input=pd.read\u csv('InputData.csv')
Match=pd.read\u csv('MasterData.csv'))
对于Input.itertuples()中的行:
对于Match.itertuples()中的第2行:
#两个数据帧中的地址和名称列之间的匹配超过69%-匹配
如果海蜇.jaro_距离(str(第[2]行]).lower()、str(第2[3]行].lower())>=0.69,且海蜇.jaro_距离(str(第[4]行]).lower()、str(第2[5]行].lower())>=0.69:
Input.at[row.Index,“Result”]=“精确匹配”
#地址和名称列之间的匹配均小于69%-不匹配
elif jellyfish.jaro_距离(str(第[2]行)).lower(),str(第2[3]行)).lower())小于0.69和jellyfish.jaro_距离(str(第[4]行)).lower(),str(第2[5]行))<0.69
Input.at[row.Index,“Result”]=“不匹配”
#其中第[2]行为公司名称列,第2[3]行为基础数据公司名称列,

第[4]行是“公司名称地址”列,第2[5]行是“主公司名称地址”列
Quick tip:在开始执行任何操作之前,将输入和匹配数据集转换为字符串和小写。现在,您正在内部循环的每次迭代中重新转换每个条目,这是不必要的,并且会降低计算速度。修复此问题不会解决更大的问题,但肯定会有所帮助。非常感谢!此外,您还可以将“elif”语句简化为“else”语句(因此不需要jaro距离计算等),因为您显然只对“if”条件的相反部分感兴趣。这将为您节省更多的时间。