ComenzarEmpieza gratis

Modificar columnas del Marco de datos

Antes, filtrabas las filas que no se ajustaban a algo parecido a un nombre. Ahora, basándote en tu trabajo anterior, tu jefe te ha pedido que crees dos nuevas columnas: first_name y last_name. Te pide que dividas la columna VOTER_NAME en palabras sobre cualquier carácter de espacio. Tratarás la última palabra como last_name, y todas las demás como first_name. En este ejercicio utilizarás algunas funciones nuevas, como .split(), .size() y .getItem(). La dirección .getItem(index) toma un valor entero para devolver el elemento de la columna con el número correspondiente. Las funciones .split() y .size() están en la biblioteca pyspark.sql.functions.

Ten en cuenta que estas operaciones son siempre algo específico del caso de uso. Que tus datos se ajusten a un formato a menudo importa más que los detalles concretos del formato. Rara vez una tarea de limpieza de datos está pensada sólo para una persona: ajustarse a un formato definido permite compartir más fácilmente los datos más adelante (es decir, Paul no tiene que preocuparse de los nombres: Mary ya ha limpiado el conjunto de datos).

El DataFrame de votantes filtrado de tu ejercicio anterior está disponible en voter_df. La biblioteca pyspark.sql.functions está disponible con el alias F.

Este ejercicio forma parte del curso

Limpiar datos con PySpark

Ver curso

Instrucciones del ejercicio

  • Añade una nueva columna llamada splits que contenga la lista de nombres posibles.
  • Utiliza el método getItem() y crea una nueva columna llamada first_name.
  • Obtén la última entrada de la lista splits y crea una columna llamada last_name.
  • Suelta la columna splits y muestra la nueva voter_df.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

# Add a new column called splits separated on whitespace
voter_df = voter_df.withColumn(____, F.____(voter_df.VOTER_NAME, '\s+'))

# Create a new column called first_name based on the first item in splits
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(____)

# Get the last entry of the splits list and create a column called last_name
voter_df = voter_df.withColumn(____, voter_df.splits.getItem(F.____('splits') - ____))

# Drop the splits column
voter_df = voter_df.____('splits')

# Show the voter_df DataFrame
voter_df.show()
Editar y ejecutar código