Modificarea coloanelor unui DataFrame
Anterior, ai filtrat rândurile care nu corespundeau unui format recognoscibil de nume. Pe baza muncii tale anterioare, managerul tău îți cere să creezi două coloane noi – first_name și last_name. Sarcina ta este să împarți coloana VOTER_NAME în cuvinte, folosind spațiul ca separator. Ultimul cuvânt va deveni last_name, iar toate celelalte vor forma first_name. În acest exercițiu vei folosi câteva funcții noi: .split(), .size() și .getItem(). Metoda .getItem(index) primește o valoare întreagă și returnează elementul de la indexul respectiv din coloană. Funcțiile .split() și .size() se găsesc în biblioteca pyspark.sql.functions.
Reține că aceste operațiuni depind întotdeauna de contextul specific de utilizare. De cele mai multe ori, este mai important ca datele tale să respecte un anumit format, decât să fie perfect adaptate unui singur caz. Curățarea datelor rareori se face pentru o singură persoană – un format bine definit facilitează partajarea ulterioară a datelor (de exemplu, Paul nu trebuie să se îngrijoreze de nume, pentru că Maria a curățat deja setul de date).
DataFrame-ul filtrat din exercițiul anterior este disponibil ca voter_df. Biblioteca pyspark.sql.functions este disponibilă sub aliasul F.
Acest exercițiu face parte din cursul
Curățarea datelor cu PySpark
Instrucțiuni pentru exercițiu
- Adaugă o nouă coloană numită
splits, care să conțină lista posibilelor nume. - Folosește metoda
getItem()și creează o nouă coloană numităfirst_name. - Obține ultimul element din lista
splitsși creează o coloană numitălast_name. - Elimină coloana
splitsși afișează noulvoter_df.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()