在Python的两列中找到匹配的相似元素

时间:2018-10-29 16:53:11

标签: python pandas nlp logic sequence

我有一个类似的数据集:

Column1                Column2
 a bc                    cdr
 cd r                    ab c
 bose                    beats
 bea ts                  bo se
 i phone                 sam sung
 samsung                 iphone

如果您发现两列都包含几乎相同的词,但是格式不同,并且其中有空格。我希望使用余弦相似度或序列匹配器之类的技术将它们与列进行匹配,以使结果变成这样:

column 1                 column 2 
a bc                      ab c
cd r                      cdr 
bose                      bo se
bea ts                    beats
i phone                   iphone
samsung                   sam sung

请不要,这只是一个示例数据,字符串比这些更复杂。 如何利用余弦相似度和序列匹配器之类的软件包来实现这一目标?

1 个答案:

答案 0 :(得分:3)

没有强大的本地pandas方法可解决此问题。我建议使用fuzzywuzzy库来解决此问题。确保先pip install fuzzywuzzy

默认情况下,该库使用Levenshtein distance来实现字符串相似性。


from fuzzywuzzy import process

res = [process.extractOne(w, df.Column2)[0] for w in df.Column1]
df.assign(Column2=res)

   Column1   Column2
0     a bc      ab c
1     cd r       cdr
2     bose     bo se
3   bea ts     beats
4  i phone    iphone
5  samsung  sam sung