开始使用免费开始使用

一个危险的连接

在本练习中,您将根据经纬度进行连接,以引入另一份用于衡量社区步行友好度的数据集。我们需要格外小心,确保用于连接的列数据类型一致,并且连接时的小数精度(小数点后的位数)一致,否则连接将无法生效!

下面可以看到,df['latitude']df['longitude'] 的精度高于 walk_df['longitude']walk_df['latitude']。我们需要把它们取到相同的精度,这样连接才能正确完成。

本练习是课程的一部分

使用 PySpark 进行特征工程

查看课程

练习说明

  • 使用 cast('double')walk_df['latitude']walk_df['longitude'] 转换为 double 类型,并用 withColumn() 原地替换列。
  • 使用 withColumn() 搭配 round('latitude', 5)round('longitude', 5) 对列进行原地取整。
  • 创建连接条件:walk_df['latitude'] 匹配 df['latitude'],且 walk_df['longitude'] 匹配 df['longitude']
  • 使用 join() 按上述条件并采用 left 连接类型将 dfwalk_df 连接起来。将连接后的数据框保存为 join_df

交互式实操练习

通过完成这段示例代码来试试这个练习。

# Cast data types
walk_df = ____.withColumn('longitude', ____.cast('double'))
walk_df = ____.withColumn(____, ____.cast('double'))

# Round precision
df = df.withColumn('longitude', round(____, 5))
df = df.withColumn(____, round(____, 5))

# Create join condition
condition = [____ == ____, ____ == ____]

# Join the dataframes together
join_df = ____.join(____, on=____, how=____)
# Count non-null records from new field
print(join_df.where(~join_df['walkscore'].isNull()).count())
编辑并运行代码