DataFrame-Spalten ändern
Zuvor hast du alle Zeilen herausgefiltert, die nicht grob einem Namensmuster entsprachen. Auf Basis dieser Vorarbeit bittet dich deine Managerin nun, zwei neue Spalten zu erstellen – first_name und last_name. Du sollst die Spalte VOTER_NAME an Leerzeichen in einzelne Wörter aufteilen. Das letzte Wort behandelst du als last_name, alle übrigen Wörter als first_name. In dieser Übung verwendest du einige neue Funktionen, darunter .split(), .size() und .getItem(). Die Methode .getItem(index) nimmt einen Integer und gibt das entsprechende Element in der Spalte zurück. Die Funktionen .split() und .size() befinden sich in der Bibliothek pyspark.sql.functions.
Beachte, dass diese Operationen immer ein Stück weit vom Anwendungsfall abhängen. Wichtiger als die genauen Details ist oft, dass deine Daten einem definierten Format entsprechen. Datenbereinigung ist selten nur für eine Person gedacht – wenn ein Format festgelegt ist, lassen sich die Daten später leichter teilen (z. B. muss Paul sich nicht mehr um Namen kümmern – Mary hat den Datensatz bereits bereinigt).
Das gefilterte Wähler-DataFrame aus der vorherigen Übung steht dir als voter_df zur Verfügung. Die Bibliothek pyspark.sql.functions ist unter dem Alias F verfügbar.
Diese Übung ist Teil des Kurses
Datenbereinigung mit PySpark
Anleitung zur Übung
- Füge eine neue Spalte namens
splitshinzu, die die Liste der möglichen Namen enthält. - Verwende die Methode
getItem()und erstelle eine neue Spalte namensfirst_name. - Hole den letzten Eintrag der
splits-Liste und erstelle eine Spalte namenslast_name. - Entferne die Spalte
splitsund zeige das neuevoter_dfan.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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()