EmpezarEmpieza gratis

Una unión peligrosa

En este ejercicio, uniremos por latitud y longitud para incorporar otro conjunto de datos que mide lo amigable que es un barrio para caminar. Debemos tener cuidado de que las columnas de unión tengan el mismo tipo de datos y de unir con la misma precisión (número de cifras después del decimal), ¡o la unión no funcionará!

A continuación verás que df['latitude'] y df['longitude'] tienen mayor precisión que walk_df['longitude'] y walk_df['latitude']. Necesitamos redondearlas a la misma precisión para que la unión funcione correctamente.

Este ejercicio forma parte del curso

Ingeniería de características con PySpark

Ver curso

Instrucciones del ejercicio

  • Convierte walk_df['latitude'] y walk_df['longitude'] al tipo double usando cast('double') sobre la columna y reemplazándola in situ con withColumn().
  • Redondea las columnas in situ con withColumn() y round('latitude', 5) y round('longitude', 5).
  • Crea la condición de unión haciendo coincidir walk_df['latitude'] con df['latitude'] y walk_df['longitude'] con df['longitude'].
  • Une df y walk_df con join(), usando la condición anterior y el tipo de unión left. Guarda el dataframe resultante como join_df.

ejercicio interactivo práctico

Prueba este ejercicio completando este código de ejemplo.

# 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())
Editar y ejecutar código