我有一个看起来像这样的df
first_name last_name
John Doe
Kelly Stevens
Dorey Chang
和另一个看起来像这样的
name email
John Doe jdoe23@gmail.com
Kelly M Stevens kelly.stevens@hotmail.com
D Chang chang79@yahoo.com
要合并这两个表,以使最终结果为
first_name last_name email
John Doe jdoe23@gmail.com
Kelly Stevens kelly.stevens@hotmail.com
Dorey Chang chang79@yahoo.com
我无法合并姓名,但是即使整体格式不同,所有电子邮件都包含每个人的姓氏。有没有一种方法可以仅使用部分字符串匹配来合并它们?
我尝试过类似的尝试,但没有成功:
df1['email']= df2[df2['email'].str.contains(df['last_name'])==True]
答案 0 :(得分:2)
IIUC,您可以对提取的结果使用merge
:
df1.merge(df2.assign(last_name=df2['name'].str.extract(' (\w+)$'))
.drop('name', axis=1),
on='last_name',
how='left')
输出:
first_name last_name email
0 John Doe jdoe23@gmail.com
1 Kelly Stevens kelly.stevens@hotmail.com
2 Dorey Chang chang79@yahoo.com