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

在Python中的两列中查找匹配的相似元素,python,pandas,nlp,logic,sequence,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 如果您注意到,这两列包含几乎相似的单词,

我有一个数据集,如:

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
请不要,这只是一个示例数据,字符串比这些更复杂。
如何利用Cosine Similarity和Sequence Matcher等软件包来实现这一点?

对于这个问题,没有一种强大的本地
pandas
方法。我建议使用
fuzzyfuzzy
库来解决这个问题。确保先安装FuzzyWzzy
pip

默认情况下,此库使用字符串相似性



完成思考需要花费大量的时间。运行时为O(n^2)。Levenshtein距离的实现速度更快。
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