開始使用免費開始

Pivot 與 Join

能夠對複合欄位進行展開(explode)與樞紐分析(pivot)很實用,不過這樣只會留下包含那些 pivot 值的 DataFrame。要真正有用,你需要把它重新與原始資料集做關聯(join)!在完成資料集合併後,對於新建立的欄位我們會有許多 NULL。由於我們知道這些欄位的產生脈絡,可以放心地用 0 補上,因為新欄位要嘛有該屬性,要嘛沒有。

本練習屬於課程

使用 PySpark 進行特徵工程

檢視課程

練習說明

  • 以記錄編號 NO 使用 groupBy() 來對 ex_garage_list 的值做 pivot;使用提供的程式碼彙總 constant_val,以忽略 null 並取第一個值。
  • 使用 NO 作為關聯條件,將 piv_dfdf 進行 left join。
  • 使用 piv_dfcolumns 屬性建立要以 0 補值的欄位清單 zfill_cols
  • 使用 fillna() 並搭配 subset,將 pivot 後 DataFrame 的欄位 zfill_cols 以 0 補值。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

from pyspark.sql.functions import coalesce, first

# Pivot 
piv_df = ex_df.____(____).____(____).agg(coalesce(first(____)))

# Join the dataframes together and fill null
joined_df = ____.join(____, on='NO', how=____)

# Columns to zero fill
zfill_cols = ____.____

# Zero fill the pivoted values
zfilled_df = joined_df.____(0, subset=____)
編輯並執行程式碼