通过地址匹配连接两个表

时间:2018-10-17 16:30:46

标签: python pandas textmatching

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

First table

Second table

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

我用过

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

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

1 个答案:

答案 0 :(得分:0)

由于没有代码,这更多是算法问题:

我会将地址分为数字,街道,城市,邮政编码,州。 Trim all values, set to upper or lower case.然后创建一个例程,根据Levenshtein距离为每个匹配项和接近匹配项创建一个加权值。权重是介于0到1之间的调整参数,但所有权重的总和应为1。返回权重(匹配概率,并让程序使用列表推导或itterrow复制结果的少数字段。表格不是很大,因此优化不应该成为问题。您也可以使用字典来做到这一点-参见David Beasley's talk。如果您搜索此站点,则有很多示例。