Python recordlinkage工具包 - 映射未知

时间:2017-07-10 13:56:59

标签: python machine-learning

我正在使用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(?, ?);

1 个答案:

答案 0 :(得分:1)

首先,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's Tidy Data以获取有关数据清理的入门知识。

如果要比较的数据可以放在一个列中,请执行此操作。如果dfA中的记录与dfB-column-1dfB-column-2dfB-column-3相对应,而不是全部三个,则应考虑是否可以“重塑”{{1解决你的问题,例如将您的数据转换为"long format",然后使用屏蔽条件(即使用dfB)来忽略无意义的比较。

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