如何解决使用状态位置作为条件的模糊匹配名称
我试图模糊匹配来自两个 CSV 文件的公司名称(每个文件在一列中都有公司名称,公司所在的州在另一列中),但希望将匹配限制为以状态为条件(例如,如果列表 A 中的公司位于加利福尼亚州,则模糊匹配将仅限于列表 B 中也在加利福尼亚州的公司)。
我有下面的工作,但它把匹配的名称和匹配的分数放在一列中,例如,“('Store XYZ',75)” - 有没有办法把它分成两列和确保我在匹配的名称周围没有引号?
import pandas as pd
from fuzzywuzzy import process
from fuzzywuzzy import fuzz
x = pd.read_csv(r'C:\Users\AH\Customers_1.csv')
choices = pd.read_csv(r'C:\Users\AH\Customers_2.csv')
def fuzzy_match(choices,x,scorer,cutoff):
match = process.extractOne(choices['Choices_Customer_Name'],choices=x.loc[x['A_State'] == choices['B_State'],'X_Customer_Name'],scorer=scorer,score_cutoff=cutoff)
if match:
return match[0],match [1]
choices['Customer_Name_Match'] = choices.apply(fuzzy_match,args=(x,fuzz.token_sort_ratio,70),axis = 1)
print(choices)
export_excel = choices.to_excel (r'C:\Users\AH\output.xlsx')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。