【问题标题】:Grouping by almost similar strings按几乎相似的字符串分组
【发布时间】:2017-02-25 23:27:27
【问题描述】:

我有一个包含城市名称和犯罪计数的数据集。数据很脏,例如“纽约”之类的城市名称写为“纽约”、“纽约我们”、“纽约市”、“曼哈顿纽约”等。我如何对所有这些进行分组城市一起总结他们的罪行?

我尝试了 python 中的“difflib”包,它匹配字符串并给你一个分数。效果不好。我还尝试了 python 中的地理编码包。它对您可以访问 api 的次数有限制,并且也不能很好地工作。有什么建议?

【问题讨论】:

标签: python pandas


【解决方案1】:

也许这会有所帮助:

http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/

另一种方式:如果一个字符串包含“new”和“york”,则将其标记为“new york city”。

另一种方法:创建一个包含所有可能出现的模糊单词的字典,并手动标记每个单词。并使用该标签将这些模糊单词中的每一个替换为标签。

【讨论】:

    【解决方案2】:

    另一种方法是遍历每个条目并去除空白区域并查看它们是否包含基本城市名称。例如,'newyork'、'new york us'、'new york city'、'manhattan new york' 去掉空白后将是 'newyork'、'newyorkus'、'newyorkcity'、'manhattannewyork',它们都包含单词“纽约”。

    此方法有两种方法,您可以遍历所有“new york”字符串并将其替换为没有空格且只是“newyork”的字符串,或者您可以即时检查它们。

    我在下面写了一个示例,但由于我不知道您的数据是如何格式化的,所以我不确定它有多大帮助。

    crime_count = 0
    for (key, val) in dataset:
        if 'newyork' in key.replace(" ", ""):
            crime_count = crime_count + val
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2011-01-06
      相关资源
      最近更新 更多