开始使用免费开始使用

Pivot 与 Join

能够对复合字段进行 explode 和 pivot 很有用,但这样只会得到仅包含透视后取值的 dataframe。要真正发挥价值,您需要把它重新与原始数据集进行连接!连接后,新创建列中会出现很多 NULL 值。鉴于我们清楚这些列的生成方式,可以放心地将它们用 0 填充——要么新的样本具有该属性,要么不具有。

本练习是课程的一部分

使用 PySpark 进行特征工程

查看课程

练习说明

  • 使用 groupBy() 以记录 ID NO 分组,对 ex_garage_list 的取值进行透视(pivot)。使用提供的代码对 constant_val 做聚合,以忽略空值并取第一个值。
  • 使用 NO 作为连接条件,将 piv_df 左连接到 df
  • 使用 piv_dfcolumns 属性创建要用 0 填充的列名列表 zfill_cols
  • 使用带有 subsetfillna(),对透视得到的 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=____)
编辑并运行代码