[英]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.