python - 如何对字符串的相似度进行分组和求和

标签 python string-matching fuzzywuzzy

我想对数据框进行分组和求和。标准 groupby 函数将行中完全相同的字符串分组在一起,但我需要在类似的字符串上完成此操作。例如-:

United States | 10  
Germnay | 23  
Unaited Staetes | 20   
Germany | 21  
Germanny | 32  
Uniited Staites | 30 

结果应该是 -:

United States 60  
Germnay 76

名称的顺序并不那么重要。这些值的总和是。

非常感谢:)

编辑:

也许创建一个 ID 列来为相似的国家/地区提供相同的 ID 会更简单。然后我就可以对此进行分组。

最佳答案

不是解决方案,而是一种技巧,如果您正在做一些快速而肮脏的事情,可能会有所帮助

  1. 小写国家/地区名称
  2. 删除国家/地区名称中的元音
  3. 删除连续出现的辅音

以这种方式转换数据后,您可以使用普通的 groupby 并且它应该工作得很好。

我建议这样做,因为您的数据似乎是用户输入的国家/地区名称。

<小时/>

另一个想法:

预处理步骤:

  1. 使用经过国家/地区名称训练的拼写校正器从错误的拼写中猜测国家/地区名称 ( https://norvig.com/spell-correct.html )
  2. 使用它来转换每一行数据。

然后使用groupby进行分组。

关于python - 如何对字符串的相似度进行分组和求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54255694/

相关文章:

python - 查找两个字符串之间的公共(public)子字符串

python - 当我测试 Django Rest Framework API 的 POST 路由时,即使已登录,它也会返回 401 未经过身份验证

c# - 不在正则表达式中

c# - 检查字符串中重复消息的方法?

python - 如何在 python 中对运行 fuzzywuzzy 字符串匹配逻辑的 2m 行进行多重处理?当前的代码非常慢

python - 将相似的字符串与常用有效词匹配

python - 何时需要Elasticsearch进行数据分析和客户服务

python - 如何在 Python 中伪造/代理一个类

python - 列表参数与数字参数的乘法

java - 在Java中如何找到两个字符串之间所有重叠的短语?