Zacznij terazZacznij za darmo

Modyfikowanie kolumn DataFrame

W poprzednim ćwiczeniu odfiltrowałeś wiersze, które nie przypominały prawidłowych imion i nazwisk. Teraz, bazując na tej pracy, menedżerka poprosiła cię o utworzenie dwóch nowych kolumn – first_name i last_name. Zadanie polega na podzieleniu kolumny VOTER_NAME na słowa według znaków spacji. Ostatnie słowo potraktuj jako last_name, a wszystkie pozostałe – jako first_name. W tym ćwiczeniu skorzystasz z nowych funkcji: .split(), .size() oraz .getItem(). Metoda .getItem(index) przyjmuje wartość całkowitą i zwraca element listy o podanym indeksie. Funkcje .split() i .size() pochodzą z biblioteki pyspark.sql.functions.

Pamiętaj, że tego rodzaju operacje są zawsze dostosowane do konkretnego przypadku użycia. Ważniejsze niż szczegóły formatu jest to, żeby dane były spójne i zgodne z przyjętym schematem. Czyszczenie danych rzadko wykonuje się dla jednej osoby – ujednolicony format ułatwia późniejsze udostępnianie zbioru (np. Paweł nie musi już martwić się o imiona i nazwiska, bo Maria już zadbała o ich poprawność).

Przefiltrowany DataFrame voter_df z poprzedniego ćwiczenia jest dostępny pod tą samą nazwą. Biblioteka pyspark.sql.functions jest dostępna pod aliasem F.

To ćwiczenie jest częścią kursu

Czyszczenie danych w PySpark

Zobacz kurs

Instrukcje do ćwiczenia

  • Dodaj nową kolumnę o nazwie splits, która będzie przechowywać listę możliwych członów nazwy.
  • Użyj metody getItem() i utwórz nową kolumnę o nazwie first_name.
  • Pobierz ostatni element listy splits i utwórz kolumnę o nazwie last_name.
  • Usuń kolumnę splits i wyświetl zaktualizowany DataFrame voter_df.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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()
Edytuj i uruchom kod