如何解决Fuzzy Wuzzy Logic 多条记录
我有两个数据集;一个具有具有相应县的唯一记录集,另一个具有具有唯一单元号的重复记录。
以下是具有重复记录但具有唯一单元号的数据集示例:
阿尔比恩志愿消防队 62QRS
阿尔比恩志愿消防队 62EMS
另一个数据集具有唯一的部门及其对应的县。
阿尔比恩志愿消防队伊利
模糊逻辑适用于单位名称 Albion Volunteer Fire Department。问题是 Erie 一词仅应用于其中一个记录,而另一个县的分配不正确。
import pandas as pd
import numpy as np
import os
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
df_1 = pd.read_csv('ori2.csv')
df_2 = pd.read_csv('EMS.csv')
df_1.rename(columns={'Agency Type' : 'Type'},inplace=True)
df_1 = df_1.loc[(df_1.Type == "EMS")]
#df_2 = df_2.loc[(df_2.County == "Erie")]
df_2.rename(columns={'ApplicantName' : 'Department'},inplace=True)
def fuzzy_merge(df_1,df_2,key1,key2,threshold=90,limit=1):
s = df_2[key2].tolist()
m = df_1[key1].apply(lambda x: process.extract(x,s,limit=limit))
df_1['matches'] = m
m2 = df_1['matches'].apply(lambda x: ','.join([i[0] for i in x if i[1] >= threshold]))
df_1['matches'] = m2
df_1['counties'] = df_2['County']
return df_1
df = fuzzy_merge(df_1,'Department',limit=1)
df.sort_values(by='Department',ascending=True).reset_index()
我认为问题在于我在 df_1 中创建一个名为counties 的新列并将其分配给df_2['County']。结果应该是 Erie,因为它在一个县而不是另一个县,因为代码引入了合并的数据帧。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。