Inizia subitoInizia gratis

Modificare le colonne di un DataFrame

In precedenza hai filtrato le righe che non assomigliavano a un nome. Ora, basandosi sul tuo lavoro precedente, la tua responsabile ti chiede di creare due nuove colonne: first_name e last_name. Ti chiede di dividere la colonna VOTER_NAME in parole usando qualsiasi carattere di spazio. Considererai l’ultima parola come last_name, e tutte le altre parole come first_name. In questo esercizio userai alcune funzioni nuove, tra cui .split(), .size() e .getItem(). Il metodo .getItem(index) accetta un intero e restituisce l’elemento corrispondente nella colonna. Le funzioni .split() e .size() si trovano nella libreria pyspark.sql.functions.

Tieni presente che queste operazioni sono sempre un po’ specifiche del caso d’uso. Far sì che i tuoi dati rispettino un formato spesso conta più dei dettagli precisi del formato. Raramente un’attività di pulizia dei dati è pensata per una sola persona: adeguarsi a un formato definito rende più semplice condividere i dati in seguito (ad esempio, Paolo non deve preoccuparsi dei nomi: Maria ha già pulito l’insieme di dati).

Il DataFrame di elettori filtrato dal tuo esercizio precedente è disponibile come voter_df. La libreria pyspark.sql.functions è disponibile con l’alias F.

Questo esercizio fa parte del corso

Pulizia dei dati con PySpark

Visualizza corso

Istruzioni dell'esercizio

  • Aggiungi una nuova colonna chiamata splits che contenga l’elenco dei possibili nomi.
  • Usa il metodo getItem() e crea una nuova colonna chiamata first_name.
  • Prendi l’ultimo elemento della lista splits e crea una colonna chiamata last_name.
  • Elimina la colonna splits e mostra il nuovo voter_df.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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()
Modifica ed esegui il codice