繁体   English   中英

基于pandas dfs中部分字符串匹配的合并

[英]Merge based on partial string match in pandas dfs

我有一个看起来像这样的 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]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM