始める無料で始める

ピボットと結合

複合フィールドを explode してピボットできるのは便利ですが、そのままだとピボットした値だけの DataFrame になってしまいます。実用的にするには、元のデータセットに再結合する必要があります。データセットを結合すると、新しく作成された列には多くの NULL が入りますが、作成時の文脈がわかっているので、属性が「あるか・ないか」を表すだけです。安全に 0 で埋めて問題ありません。

この演習はコースの一部です

PySparkで学ぶ特徴量エンジニアリング

コースを見る

演習の手順

  • レコード ID NOgroupBy() し、ex_garage_list の値をピボットします。NULL を無視して最初の値を取るために、用意されたコードで constant_val を集約してください。
  • NO を結合条件に使い、piv_dfdf に左外部結合します。
  • piv_dfcolumns 属性を使って、0 埋めする列名リスト zfill_cols を作成します。
  • fillna()subset を使い、ピボット後のデータフレームの列 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=____)
コードを編集して実行