CommencezCommencez gratuitement

Modifier des colonnes de DataFrame

Plus tôt, vous avez filtré toutes les lignes qui ne ressemblaient pas vraiment à un nom. À partir de ce travail, votre gestionnaire vous demande maintenant de créer deux nouvelles colonnes : first_name et last_name. Elle vous demande de scinder la colonne VOTER_NAME en mots selon tout caractère d'espace. Vous traiterez le dernier mot comme last_name, et tous les autres mots comme first_name. Vous utiliserez de nouvelles fonctions dans cet exercice, notamment .split(), .size() et .getItem(). La méthode .getItem(index) prend une valeur entière pour renvoyer l'élément correspondant dans la colonne. Les fonctions .split() et .size() se trouvent dans la bibliothèque pyspark.sql.functions.

Veuillez noter que ces opérations sont toujours un peu propres au cas d'usage. Amener vos données à respecter un format compte souvent plus que les détails précis du format. Il est rare qu'une tâche de nettoyage de données ne serve qu'à une seule personne : respecter un format défini facilite le partage des données par la suite (p. ex., Paul n'a pas à se soucier des noms — Mary a déjà nettoyé l'ensemble de données).

Le DataFrame d'électeurs filtré de l'exercice précédent est accessible sous le nom voter_df. La bibliothèque pyspark.sql.functions est importée sous l'alias F.

Cette activité fait partie du cours

Nettoyer des données avec PySpark

Voir le cours

Instructions de l’exercice

  • Ajoutez une nouvelle colonne appelée splits contenant la liste des noms possibles.
  • Utilisez la méthode getItem() et créez une nouvelle colonne appelée first_name.
  • Récupérez la dernière entrée de la liste splits et créez une colonne appelée last_name.
  • Supprimez la colonne splits et affichez le nouveau voter_df.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# 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()
Modifier et exécuter le code