Selección II
De forma similar a SQL, también puedes utilizar el método .select()
para realizar operaciones por columnas. Cuando selecciones una columna utilizando la notación df.colName
, puedes realizar cualquier operación con la columna y el método .select()
devolverá la columna transformada. Por ejemplo:
flights.select(flights.air_time/60)
devuelve una columna de duraciones de vuelo en horas en lugar de minutos. También puedes utilizar el método .alias()
para cambiar el nombre de una columna que estés seleccionando. Así que si quisieras .select()
la columna duration_hrs
(que no está en tu DataFrame) podrías hacer
flights.select((flights.air_time/60).alias("duration_hrs"))
El método equivalente de Spark DataFrame .selectExpr()
toma las expresiones SQL como una cadena:
flights.selectExpr("air_time/60 as duration_hrs")
siendo la palabra clave SQL as
equivalente al método .alias()
. Para seleccionar varias columnas, puedes pasar varias cadenas.
Recuerda que ya tienes en tu espacio de trabajo un SparkSession
llamado spark
, junto con el Spark DataFrame flights
.
Este ejercicio forma parte del curso
Introducción a PySpark
Instrucciones de ejercicio
Crea una tabla con la velocidad media de cada vuelo en ambos sentidos.
- Calcula la velocidad media dividiendo la
distance
por laair_time
(convertida en horas). Utiliza el método.alias()
nombra esta columna"avg_speed"
. Guarda el resultado como la variableavg_speed
. - Selecciona las columnas
"origin", "dest", "tailnum"
, yavg_speed
(¡sin comillas!). Guárdala comospeed1
. - Crea la misma tabla utilizando
.selectExpr()
y una cadena que contenga una expresión SQL. Guárdala comospeed2
.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")
# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)
# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")