Skip to main content
 首页 » 编程设计

python之在 Pandas 中合并两个数据帧时如何 'fuzzy'匹配字符串

2025年05月04日30zhwl

我有两个数据框 df1 和 df2。

df1 = pd.DataFrame ({'Name': ['Adam Smith', 'Anne Kim', 'John Weber', 'Ian Ford'], 
                     'Age': [43, 21, 55, 24]}) 
df2 = pd.DataFrame ({'Name': ['adam Smith', 'Annie Kim', 'John  Weber', 'Ian Ford'], 
                     'gender': ['M', 'F', 'M', 'M']}) 

我需要在 Name 列上使用 pandas.merge 加入这两个数据框。但是,正如您所注意到的,两个数据框中的 Name 列之间存在一些细微差别。让我们假设他们是同一个人。如果我只是这样做:

pd.merge(df1, df2, how='inner', on='Name') 

我只得到了只有一行的数据框,即“Ian Ford”。

有谁知道如何合并这两个数据框?如果我们在一个字符串列上连接两个表,我想这是很常见的情况。我完全不知道如何处理这个。非常感谢。

请您参考如下方法:

我在这里使用fuzzywuzzy

from fuzzywuzzy import fuzz 
from fuzzywuzzy import process 
 
 
 
df2['key']=df2.Name.apply(lambda x : [process.extract(x, df1.Name, limit=1)][0][0][0]) 
 
df2.merge(df1,left_on='key',right_on='Name') 
Out[1238]:  
        Name_x gender         key  Age      Name_y 
0   adam Smith      M  Adam Smith   43  Adam Smith 
1    Annie Kim      F    Anne Kim   21    Anne Kim 
2  John  Weber      M  John Weber   55  John Weber 
3     Ian Ford      M    Ian Ford   24    Ian Ford