首页 > 解决方案 > 通过地址匹配连接两个表

问题描述

我想通过地址的近似匹配来合并两个表。一张表有 10000 个地址,另一张表有 33000 个地址。

第一张桌子

第二张桌子

然后,为第一个表中的每个地址提取“属性 ID”。我该怎么做?

我用了

import difflib
add['Property Address'] = add['Property Address'].map(lambda x: difflib.get_close_matches(x, address['Address']))

但是,这给了我一个错误。另外,代码需要几个小时才能运行。有什么提高效率的方法吗?

标签: pythonpandastextmatching

解决方案


由于没有代码,这更像是一个算法问题:

我会将地址分解为数字、街道、城市、邮编、州。修剪所有值,设置为大写或小写。然后创建一个例程,根据 Levenshtein 距离为每个匹配和接近匹配创建一个加权值。权重是介于 0 和 1 之间的调整参数,但所有权重的总和应为 1。返回权重(匹配概率并让您的程序使用列表理解或 itterrow 复制生成的几个字段。表格不是那么大,所以优化不应该是一个问题。你也可以使用字典来做到这一点 - 请参阅David Beasley 的演讲。如果你搜索这个网站,会有很多例子。


推荐阅读