【发布时间】:2015-10-21 05:30:50
【问题描述】:
我正在尝试匹配两个表中的记录,但没有公用键并且数据中有一些错误。具体来说,我在表 A 中有给定组和日期的记录,我想与表 B 中具有相同组的记录匹配,但日期可能不同。此外,有些记录可能只存在于表 A 或 B 中。
示例表
Table A
=========================
id | group | date | ...
---+-------+--------+----
0 | A | 1/1/15 | ...
1 | B | 1/3/15 | ...
2 | A | 1/5/15 | ...
3 | A | 1/5/15 | ...
: | : | : | :::
99 | Z | 4/5/15 | ...
Table B
=========================
id | group | date | ...
---+-------+--------+----
0 | A | 1/2/15 | ...
1 | A | 1/5/15 | ...
2 | A | 1/6/15 | ...
: | : | : | :::
99 | Z | 4/5/15 | ...
这里我希望表 A 中的记录 0 与表 B 中的记录 0 匹配,即使日期不同(但很接近),表 A 中的记录 1 在表 B 中丢失,并且表 B 中可能有多个记录表 A(或 B)具有相同的组和日期(这些不是重复的)。
目前我没有匹配日期不同的记录,但我正在丢失可能有用的数据。因此,我想迭代地改进匹配,以便我有更完整的匹配。我认为概率方法比确定性方法更有意义,但我愿意就此展开争论。
我的第一个问题是什么是正确的工具。目前,这些表位于 PostgresSQL 数据库中,并且足够大,很难在本地机器上处理它们。但是我不熟悉在 Postgres 中执行概率连接的任何方式,但我希望 Python 对概率记录链接有良好(足够)的支持。
这可以(应该)在 Postgres 或其他工具(Python)中完成吗?谁能指导我使用任何资源(示例、代码等)?
【问题讨论】:
-
我们在说多少行?你有多少内存?
-
300,000 多行,每个表中有大约十几个感兴趣的列。 16GB 内存
标签: python postgresql match