【问题标题】:Fuzzywuzzy on subset of data based on conditions根据条件对数据子集进行模糊处理
【发布时间】:2019-02-20 13:48:55
【问题描述】:

首先,请注意我是 python 新手,所以提前道歉。然而,我在最后一两天对此进行了研究,但没有运气 - 因此我在这里发表了第一篇文章。

我需要根据 CSV 文件中的“名称”模糊匹配数据,格式如下:

Code,Name,Location
123,Test data,LON
456,Data test,LON
789,Other,LON
1234,Test data,NYC

我遇到的问题是,我希望fuzzzywuzzy 只查看与迭代中相同位置代码的数据。 所以在我的第一个循环中,“测试数据,LON”不应该匹配“测试数据,纽约”。

这是我目前所拥有的:

import pandas as pd
import numpy as np
from fuzzywuzzy import process
from fuzzywuzzy import fuzz

data = pd.read_csv('data.csv', delimiter=',', usecols=['Code', 'Name', 'Location'])

for index, row in data.iterrows():
    location = row['Location']
    name = row['Name']
    dd = data[data.Location == location ][['Name']]
    result = process.extractBests(name, dd, limit=3)
    print(result)    

上述背后的想法是,循环通过我的 DataFrame 提取位置并将其用作过滤器以生成模糊的数据子集以与之匹配。

任何帮助,或朝着正确方向轻推,将不胜感激。 谢谢。

编辑

我希望匹配输出如下,然后我可以考虑按照我认为合适的方式进行布局:

('Test data', [('Test data', 100, 0), ('Test data', 100, 3), ('Data test', 95, 1), ('Other', 34, 2)])
('Data test', [('Data test', 100, 1), ('Test data', 95, 0), ('Test data', 95, 3), ('Other', 36, 2)])

不过,此数据应仅包含来自同一 Location 的匹配项。

作为进一步的上下文,我在 Name 列中有 110k 行数据,我想找到这些变化。我只关心同一个Location 中的匹配项,因此认为没有必要根据我的整个 110k 数据集进行模糊查找。

【问题讨论】:

  • 您可能想查看groupby - 按位置分组,然后模糊搜索Name 字段
  • 从您的示例中给出您希望实现的匹配(即您想要所有伦敦的分组还是仅伦敦前 2 个)
  • 感谢 JoshFriedlander 和 Dillon Josh 的回复,我会查看 groupby,谢谢。狄龙,我已经编辑了我的帖子,添加了一些额外的细节。

标签: python pandas dataframe fuzzywuzzy


【解决方案1】:

如何将您的列“位置”用作列表并遍历此列表:

import pandas as pd
import numpy as np
from fuzzywuzzy import process
from fuzzywuzzy import fuzz

data = pd.read_excel('data.xlsx')
location = list(data['Location'].drop_duplicates())
for i in location:
    datafiltered = data[data['Location'] == i ]
    for j in datafiltered['Name']:
        result = process.extractBests(j, datafiltered['Name'], limit=3)
        print(result) 

我希望它有所帮助。 BR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多