Kom igångKom igång gratis

Ändra kolumner i en DataFrame

I föregående övning filtrerade du bort rader som inte hade ett format som liknade ett namn. Nu ber din chef dig att skapa två nya kolumner – first_name och last_name – baserat på ditt tidigare arbete. Du ska dela upp kolumnen VOTER_NAME vid varje mellanslag. Det sista ordet behandlas som last_name, och alla övriga ord som first_name. I den här övningen använder du några nya funktioner: .split(), .size() och .getItem(). Metoden .getItem(index) tar ett heltalsvärde och returnerar det element i kolumnen som har det angivna indexet. Funktionerna .split() och .size() finns i biblioteket pyspark.sql.functions.

Observera att den här typen av operationer alltid är mer eller mindre specifika för det aktuella användningsfallet. Att data följer ett visst format är ofta viktigare än exakt vilket format det är. Datarensning är sällan avsedd för bara en person – ett enhetligt format gör det enklare att dela data senare (det vill säga, Paul behöver inte bekymra sig om namnformateringen, eftersom Mary redan har rensat datamängden).

Den filtrerade voter-DataFrame från föregående övning finns tillgänglig som voter_df. Biblioteket pyspark.sql.functions är tillgängligt under aliaset F.

Den här övningen är en del av kursen

Datarensning med PySpark

Visa kurs

Övningsinstruktioner

  • Lägg till en ny kolumn kallad splits som innehåller listan med möjliga namn.
  • Använd metoden getItem() och skapa en ny kolumn kallad first_name.
  • Hämta det sista elementet i listan splits och skapa en kolumn kallad last_name.
  • Ta bort kolumnen splits och visa den uppdaterade voter_df.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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()
Redigera och kör kod