簡體   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