如何模糊'在pandas中合并两个数据帧时匹配字符串

时间:2018-03-05 22:12:04

标签: 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']})

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

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

我只得到一个只有一行的数据帧,这就是“伊恩·福特”。

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

2 个答案:

答案 0 :(得分:4)

我在这里使用{ return CONSTANT; }

fuzzywuzzy

答案 1 :(得分:0)

不确定模糊匹配是否符合您的要求。也许让每个名字都成为一个合适的名字?

df1.Name = df1.Name.apply(lambda x: x.title())
df2.Name = df2.Name.apply(lambda x: x.title())

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