Python 记录链接工具包 - 映射未知



我正在使用 http://recordlinkage.readthedocs.io/en/latest/index.html 当数据集 1 中的某些列不一致地映射到数据集 2 中的同一列时,如何提供数据集之间的映射。 基本上,映射是未知的,我想指定的是 - Dataset1.Column1 可以映射到 Dataset2.Column1 或 Dataset2.Column2 或 Dataset2.Column3 如何指定相同的比较属性?

compare_cl = rl.Compare(pairs, dfA, dfB)
compare_cl.string(?, ?);

首先,recordlinkage在比较记录时不会强制实施任何类型的映射,因此您可以比较两个数据帧中的任何两列,而不管这些列以前是否已经比较过。

在您的情况下,您可以执行以下操作:

compare_cl = recordlinkage.Compare(pairs, dfA, dfB)
compare_cl.string('dfA-column-1', 'dfB-column-1')
compare_cl.string('dfA-column-1', 'dfB-column-2')
compare_cl.string('dfA-column-1', 'dfB-column-3')

recordlinkage只能在各个列之间进行比较。因此,如果要比较的值跨多个列出现,则需要在预处理阶段或分类阶段解决此问题。

如果可能,请尝试通过数据预处理来解决此问题。我不知道您的问题的具体情况,但听起来您的数据的结构可能会使记录链接变得混乱,如果不在工作流程的早期解决。我强烈建议您查看Hadley Wickham的Tidy Data,以获取有关数据清理的入门知识。

如果要比较的数据可以放入单个列中,请执行此操作。如果dfA中的记录对应于dfB-column-1,或dfB-column-2,或对应于dfB-column-3,但不是全部对应于这三者,您应该考虑是否可以"重塑"dfB来解决您的问题,例如将数据转换为"长格式",然后使用阻止标准(即使用recordlinkage.BlockIndex(来忽略无意义的比较。

如果(无论出于何种原因(您无法在预处理期间解决此问题,则可以在将候选链接分类为匹配/非匹配时应用条件。

最新更新