我正在使用 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)
接下来,我需要检查每组匹配项(按“集群 ID”分组)并确认每组中名称的前 3 个字符至少相同。我通过遍历 dedupedComplexSets 中的每个组并进一步按每个Surname的前三个字符对每个组的内容进行分组来执行此操作。
for name, group in dedupedComplexSetsGrouped:
bySurnamePrefix = group.groupby(group.Surname.str[:3]).size()
最后,我想标记属于重复数据删除集群的每一行,其中 Surname 'begins with' 的数量 > 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 是脚本列):
RowID|名字|姓氏
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 作为记录不匹配的一种方式。也许有更有效的方法来做到这一点?
如上面的评论所示,来自 Jezrael 的回答:
代替: dedupedComplexSets[group, 'RowClusterHasLeadingCharacterMismatch'] = True to
和
dedupedComplexSets.loc[group.index, 'RowClusterHasLeadingCharacterMismatch'] = True
我的评论:对 dedupedComplexSets 所做的更改将反映在dedupedComplexSets 中,并且可以保存到 CSV。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句