簡體   English   中英

如何根據 PySpark 中的另一個數據框列處理數據框列?

[英]How to process a dataframe column based on another dataframe column in PySpark?

假設我有這兩個數據框

df1 :   | Name|    Surname      | email   
          John      Smith         JohnSmith@gmail.com
          Jake      Smith         JakeSmith@gmail.com 
          Anna      Hendrix       Anna1994@protonmail.com      
          Kale      Kinderstone   Kinder@hotmail.com
         George     Hiddleston    GH@tonmail.com
        Patrick     Huston        Huston1990@yahoomail.com


df2 :   | Name|    Surname      | email   
          John      Smith         JSmith@ymail.com
         Hannah     Montana       HMontana@ymail.com 
          Anna      Hendrix       AHendrix@ymail.com      
          Kale      Kinderstone   KKinderstone@ymail.com
         Ivan       Gaganovitch   IG@ymail.com
        Florence     Jekins       FJekins@ymail.com

我想做的是在不觸及其余數據的情況下替換一些特定的電子郵件。 所以,我想做的最終產品是

df3 :   | Name|    Surname      | email   
          John      Smith         JSmith@ymail.com
          Jake      Smith         JakeSmith@gmail.com 
          Anna      Hendrix       AHendrix@ymail.com      
          Kale      Kinderstone   KKinderstone@ymail.com
         George     Hiddleston    GH@tonmail.com
        Patrick     Huston        Huston1990@yahoomail.com

一開始,我嘗試通過連接名稱並使用列作為鍵來加入它們,但后來我陷入了如何處理列以及如何刪除 df2 數據的問題。

加入數據框,但在它們上使用alias 然后,您將能夠在同名的列之間進行選擇。

df3 = (df1.alias('a')
    .join(df2.alias('b'),['Name', 'Surname'], 'left')
    .select(
        'Name',
        'Surname',
        F.coalesce('b.email', 'a.email').alias('email')
    )
)
df3.show()
# +-------+-----------+--------------------+
# |   Name|    Surname|               email|
# +-------+-----------+--------------------+
# |   Anna|    Hendrix|  AHendrix@ymail.com|
# |   Jake|      Smith| JakeSmith@gmail.com|
# |   John|      Smith|    JSmith@ymail.com|
# |Patrick|     Huston|Huston1990@yahoom...|
# | George| Hiddleston|      GH@tonmail.com|
# |   Kale|Kinderstone|KKinderstone@ymai...|
# +-------+-----------+--------------------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM