我想实现名称匹配逻辑,我在A列中取值并尝试在B列中找到类似的匹配。
例如:
"莎莉在海边卖贝壳"在A列中可以匹配 "莎莉贝壳 - 海滨"在B栏
基本上我想以不同的方式重新排列Col A字符串,直到在Col B中找到匹配为止。
我希望尝试搜索字符串的完全匹配方式,如果没有完全匹配,请从Col A字符串的末尾开始删除字词(即" Sally出售贝壳通过"然后" Sally出售贝壳By"然后" Sally出售贝壳")等,直到找到匹配。我也希望尝试不同的拼写版本,因为" Seashore"可能是" Sea"在B栏中。
这是我当前(不工作)的脚本:
df1=pd.read_csv('C:\\Users\\nkurdob\\Desktop\\Sheet1.csv')
df2=pd.read_csv('C:\\Users\\nkurdob\\Desktop\\Sheet2.csv')
l1=[]
def word(l,c):
m=len(l)
for k in range(0,m):
if(l[k] in c):
ret=0
else:
ret=1
return ret
for i in range(160,1562):
print(i)
search1=df1['A'][i]
print(search1)
s2=search1.lower()
words=s2.split()
for j in range(0,325411):
n=len(df2['A'][j])
[j]).ratio())
if(search1 in df2['A'][j] or s2 in df2['A'][j] or words[0]+words[1] in df2['A'][j] or words[0]+words[1]+words[2] in df2['A'][j]):
print(df2['ID'][j])
break
我尝试过使用fuzzywuzzy,但它会返回一些错误的匹配,这会破坏脚本的重点。