Ändern von DataFrame-Spalten
Zuvor hast du alle Zeilen herausgefiltert, die nicht mit einem Namen übereinstimmen, der einem Namen ähnelt. Auf der Grundlage deiner früheren Arbeit hat dich dein Vorgesetzter gebeten, zwei neue Spalten zu erstellen - first_name
und last_name
. Sie bittet dich, die Spalte VOTER_NAME
an einem beliebigen Leerzeichen in Wörter aufzuteilen. Du behandelst das letzte Wort als last_name
, und alle anderen Wörter als first_name
. In dieser Übung wirst du einige neue Funktionen verwenden, darunter .split()
, .size()
und .getItem()
. Die .getItem(index)
nimmt einen ganzzahligen Wert an, um das entsprechend nummerierte Element in der Spalte zurückzugeben. Die Funktionen .split()
und .size()
befinden sich in der Bibliothek pyspark.sql.functions
.
Bitte beachte, dass diese Vorgänge immer etwas spezifisch für den jeweiligen Anwendungsfall sind. Die Konformität deiner Daten mit einem Format ist oft wichtiger als die spezifischen Details des Formats. Es kommt selten vor, dass eine Datenbereinigung nur für eine Person bestimmt ist - die Anpassung an ein bestimmtes Format erleichtert die spätere Weitergabe der Daten (z. B. muss sich Paul nicht um die Namen kümmern - Mary hat den Datensatz bereits bereinigt).
Der gefilterte Wähler DataFrame aus deiner vorherigen Übung ist unter voter_df
verfügbar. Die Bibliothek pyspark.sql.functions
ist unter dem Alias F
verfügbar.
Diese Übung ist Teil des Kurses
Daten bereinigen mit PySpark
Anleitung zur Übung
- Füge eine neue Spalte mit dem Namen
splits
hinzu, 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 Liste
splits
und erstelle eine Spalte namenslast_name
. - Lass die Spalte
splits
weg und zeige die neuevoter_df
an.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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()