在python中使用特定搜索逻辑在不同列中查找近似名称匹配

时间:2017-01-26 16:15:06

标签: python pandas numpy

我想实现名称匹配逻辑,我在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,但它会返回一些错误的匹配,这会破坏脚本的重点。

0 个答案:

没有答案