Creación de columnas
En este capítulo, aprenderás a utilizar los métodos definidos por la clase DataFrame
de Spark para realizar operaciones de datos comunes.
Veamos cómo realizar operaciones por columnas. En Spark puedes hacerlo utilizando el método .withColumn()
, que toma dos argumentos. En primer lugar, una cadena con el nombre de tu nueva columna y, en segundo lugar, la nueva columna propiamente dicha.
La nueva columna debe ser un objeto de la clase Column
. Crear uno de ellos es tan fácil como extraer una columna de tu DataFrame utilizando df.colName
.
Actualizar un Spark DataFrame es algo diferente a trabajar en pandas
porque el Spark DataFrame es inmutable. Esto significa que no puede modificarse y, por tanto, las columnas no pueden actualizarse in situ.
Así, todos estos métodos devuelven un nuevo DataFrame. Para sobrescribir el DataFrame original debes reasignar el DataFrame devuelto utilizando el método de la siguiente manera:
df = df.withColumn("newCol", df.oldCol + 1)
El código anterior crea un DataFrame con las mismas columnas que df
más una nueva columna, newCol
, donde cada entrada es igual a la entrada correspondiente de oldCol
, más uno.
Para sobrescribir una columna existente, ¡solo tienes que pasar el nombre de la columna como primer argumento!
Recuerda que en tu espacio de trabajo ya hay un SparkSession
llamado spark
.
Este ejercicio forma parte del curso
Introducción a PySpark
Instrucciones de ejercicio
- Utiliza el método
spark.table()
con el argumento"flights"
para crear un DataFrame que contenga los valores de la tablaflights
en.catalog
. Guárdalo comoflights
. - Muestra la cabeza de
flights
utilizandoflights.show()
. Comprueba el resultado: la columnaair_time
contiene la duración del vuelo en minutos. - Actualiza
flights
para incluir una nueva columna llamadaduration_hrs
, que contiene la duración de cada vuelo en horas (tendrás que dividirair_time
por el número de minutos de una hora).
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
# Create the DataFrame flights
flights = spark.table(____)
# Show the head
____.____()
# Add duration_hrs
flights = flights.withColumn(____)