Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于条件的数据子集模糊化_Python_Pandas_Dataframe_Fuzzywuzzy - Fatal编程技术网

Python 基于条件的数据子集模糊化

Python 基于条件的数据子集模糊化,python,pandas,dataframe,fuzzywuzzy,Python,Pandas,Dataframe,Fuzzywuzzy,首先,请注意,我是python新手,所以请提前道歉。然而,我在最后一两天对此进行了研究,运气不佳——因此我在这里发表了第一篇文章 我需要根据以下格式的CSV文件中的“名称”模糊匹配数据: Code,Name,Location 123,Test data,LON 456,Data test,LON 789,Other,LON 1234,Test data,NYC 然而,我遇到的问题是,我希望fuzzzywuzzy只查看迭代中相同位置代码的数据。 所以在我的第一个循环中,“testdata,LON

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

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

Code,Name,Location
123,Test data,LON
456,Data test,LON
789,Other,LON
1234,Test data,NYC
然而,我遇到的问题是,我希望
fuzzzywuzzy
只查看迭代中相同位置代码的数据。 所以在我的第一个循环中,“testdata,LON”不应该与“testdata,NYC”匹配

这就是我到目前为止所做的:

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)    
上面提到的想法是,在我的数据帧中循环提取位置,并使用它作为过滤器来生成数据子集,以供fuzzywuzzy匹配

我们将非常感谢您的任何帮助,或是朝着正确的方向轻推。 谢谢

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

('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)])
但此数据应仅包含来自相同
位置的匹配项


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

如何使用列“位置”作为列表并遍历此列表:

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

将您的“位置”列用作列表,并反复浏览此列表,如何:

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

您可能希望查看-按位置分组,然后根据您的示例模糊搜索
名称
字段,给出您希望实现的匹配(即,您希望所有伦敦的分组还是仅前2名伦敦的分组)感谢Josh Friedlander和Dillon Josh的回复,我将查看groupby,谢谢。Dillon,我编辑了我的文章,添加了一些额外的细节。您可能希望查看-按位置分组,然后根据您的示例模糊搜索
名称
字段,给出您希望实现的匹配(即,您希望所有伦敦的分组还是仅前2个伦敦的分组)感谢Josh Friedlander和Dillon Josh的回复,我会查看groupby,谢谢。狄龙,我已经编辑了我的文章,增加了一些细节。