CommencerCommencer gratuitement

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

Afficher le cours

Instructions

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