ピボットと結合
複合フィールドを explode してピボットできるのは便利ですが、そのままだとピボットした値だけの DataFrame になってしまいます。実用的にするには、元のデータセットに再結合する必要があります。データセットを結合すると、新しく作成された列には多くの NULL が入りますが、作成時の文脈がわかっているので、属性が「あるか・ないか」を表すだけです。安全に 0 で埋めて問題ありません。
この演習はコースの一部です
PySparkで学ぶ特徴量エンジニアリング
演習の手順
- レコード ID
NOでgroupBy()し、ex_garage_listの値をピボットします。NULL を無視して最初の値を取るために、用意されたコードでconstant_valを集約してください。 NOを結合条件に使い、piv_dfをdfに左外部結合します。piv_dfのcolumns属性を使って、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=____)