【发布时间】:2019-01-18 14:08:56
【问题描述】:
我想对数据框进行分组和求和。标准的 groupby 函数将完全相同的字符串组合在一起,但我需要对类似的字符串进行此操作。例如-:
United States | 10
Germnay | 23
Unaited Staetes | 20
Germany | 21
Germanny | 32
Uniited Staites | 30
这应该是 -:
United States 60
Germnay 76
名称的顺序并不重要。值的总和是。
非常感谢:)
编辑:
也许创建一个为相似国家/地区提供相同 ID 的 ID 列会更简单。那我就可以分组了。
【问题讨论】:
-
请展示您目前的工作方式。如果这给您带来了任何问题,除了我们都知道的更好的方法之外的痛苦感觉,也请添加。
-
这看起来很棘手,因为模糊相似性不一定是传递的。例如,“dog”与“dig”相似,“dig”与“wig”相似,但“dog”与“wig”不相似。那么你如何决定如何对这些词进行分组呢?您不希望“dog”和“wig”在同一个组中,但您希望“dig”与它们都在同一个组中。
-
您可以使用 levenshtein 距离来进行字符串相似性,并将阈值设置为 0.80
-
levenshtein 是正确的答案,但我认为它会很慢,因为您必须将每个字符串与其他字符串进行比较
-
我同意你的看法。我认为你提出的预处理方案是正确的。
标签: python string-matching fuzzywuzzy