在熊猫中合并两个数据框时如何“模糊”匹配字符串

zes*_*sla 1 python pandas

我有两个数据框df1df2

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']})
Run Code Online (Sandbox Code Playgroud)

我需要在列上将pandas.merge与这两个数据框连接起来Name。但是,您注意到,Name两个数据框的列之间存在一些细微差异。假设他们是同一个人。如果我只是这样做:

pd.merge(df1, df2, how='inner', on='Name')
Run Code Online (Sandbox Code Playgroud)

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

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

WeN*_*Ben 5

我在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
Run Code Online (Sandbox Code Playgroud)