Modification des colonnes du DataFrame
Auparavant, vous filtraient toutes les lignes qui ne correspondaient pas à quelque chose qui ressemblait à un nom. Sur la base de vos travaux antérieurs, votre responsable vous a demandé de créer deux nouvelles colonnes - first_name et last_name. Elle vous demande de diviser la colonne VOTER_NAME en mots sur n'importe quel caractère d'espace. Vous traiterez le dernier mot comme le last_name, et tous les autres mots comme le first_name. Vous utiliserez de nouvelles fonctions dans cet exercice, notamment .split(), .size() et .getItem(). Le site .getItem(index) prend une valeur entière pour renvoyer l'élément de la colonne qui porte le numéro approprié. Les fonctions .split() et .size() se trouvent dans la bibliothèque pyspark.sql.functions.
Veuillez noter que ces opérations sont toujours quelque peu spécifiques au cas d'utilisation. La conformité de vos données à un format est souvent plus importante que les détails spécifiques du format. Il est rare qu'une tâche de nettoyage de données ne soit destinée qu'à une seule personne - la correspondance avec un format défini facilite le partage ultérieur des données (par exemple, Paul n'a pas besoin de se préoccuper des noms - Marie a déjà nettoyé l'ensemble de données).
Le DataFrame de votants filtré de votre exercice précédent est disponible à l'adresse voter_df. La bibliothèque pyspark.sql.functions est disponible sous l'alias F.
Cet exercice fait partie du cours
Nettoyer des données avec PySpark
Instructions
- Ajoutez une nouvelle colonne appelée
splitscontenant la liste des noms possibles. - Utilisez la méthode
getItem()et créez une nouvelle colonne appeléefirst_name. - Récupérez la dernière entrée de la liste
splitset créez une colonne appeléelast_name. - Supprimez la colonne
splitset affichez le nouveauvoter_df.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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()