簡體   English   中英

PySpark 在 GroupBy 之后加入

[英]PySpark Join after GroupBy

我有兩個數據框,我想做的是按組/分區加入它們。 我怎樣才能在 PySpark 中做到這一點?

第一個 df 包含 3 個由 id、時間戳和值標識的時間序列。 注意到時間序列包含一些間隙(缺失天數)

在此處輸入圖片說明

第二個 df 包含一個沒有間隙的時間序列

在此處輸入圖片說明

我想要達到的結果是

在此處輸入圖片說明

在這種情況下,使用coalesce在第二個df 上進行Left join將起作用。

Example:

df.show()
#---+--------+-----+
#tag|      ts|value|
#---+--------+-----+
#  a|01-01-19|   45|
#  a|03-01-19|   89|
#  a|04-01-19|   24|
#  a|05-01-19|  778|
#---+--------+-----+

df1.show()
#+--------+
#|      ts|
#+--------+
#|01-01-19|
#|02-01-19|
#|03-01-19|
#|04-01-19|
#|05-01-19|
#+--------+

df1.alias("t1").join(df.alias("t2"),col("t1.ts")==col("t2.ts"),"left").\
selectExpr("coalesce(t1.ts,t2.ts) as ts","tag","value").\
orderBy("ts").\
show()

#+--------+----+-----+
#|      ts| tag|value|
#+--------+----+-----+
#|01-01-19|   a|   45|
#|02-01-19|null| null|
#|03-01-19|   a|   89|
#|04-01-19|   a|   24|
#|05-01-19|   a|  778|
#+--------+----+-----+

暫無
暫無

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

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