我正在使用 pandas de_dupe 进行名称重复数据删除,并且有多个步骤。
首先,我对源数据进行训练和重复数据删除。
deDupedNames = dedupe_dataframe( sourceData, columnsOfInterest, config_name=configName)
接下来我丢弃集群只有 1 个参与者的数据集
dedupedComplexSets = dedupe_df_sorted.groupby( ['cluster id']).filter(lambda x: len(x) > 1)
接下来,我需要检查每组匹配项(按“cluster id”分组)并确认每组中至少前 3 个字符是相同的。我通过遍历 dedupedComplexSets 中的每个组并通过每个Surname的前三个字符进一步对每个组的内容进行分组来做到这一点。
for name, group in dedupedComplexSetsGrouped:
bySurnamePrefix = group.groupby(group.Surname.str[:3]).size()
最后,我想标记属于重复数据删除集群的每一行,其中姓氏“开头”的数量> 1
for name, group in dedupedComplexSetsGrouped:
bySurnamePrefix = group.groupby(group.Surname.str[:3]).size()
if( len( bySurnamePrefix) > 1):
dedupedComplexSets[group, 'RowClusterHasLeadingCharacterMismatch'] = True
但是,由于“可变哈希”错误或其他错误,我无法写回原始数据帧。
像这样的问题是如何解决的?以及如何在 Grouped Set 数据框之外传达组检查的输出?一定有正确的方法……?
(其中 RowClusterHasLeadingCharacterMismatch 是脚本列)中的示例数据:
行 ID|名字|姓氏
12345, fred, surname, false,
24385, frred, surname, false,
输出示例数据:RowID|FirstName|Surname|cluster id|confidence|RowClusterHasLeadingCharacterMismatch
12345, fred, surname, false, 1, .9999995, True
24385, frred, surname, false, 1, .999992, True
请注意,我使用 RowClusterHasLeadingCharacterMismatch 作为记录不匹配的一种方式。也许有更有效的方法来做到这一点?