Modificando colunas do DataFrame
Anteriormente, você filtrava todas as linhas que não estivessem em conformidade com algo que se assemelhasse a um nome. Agora, com base no seu trabalho anterior, seu gerente pediu que você criasse duas novas colunas - first_name
e last_name
. Ela pede que você divida a coluna VOTER_NAME
em palavras em qualquer caractere de espaço. Você tratará a última palavra como last_name
, e todas as outras palavras como first_name
. Você usará algumas funções novas neste exercício, incluindo .split()
, .size()
e .getItem()
. O .getItem(index)
usa um valor inteiro para retornar o item numerado adequadamente na coluna. As funções .split()
e .size()
estão na biblioteca pyspark.sql.functions
.
Observe que essas operações são sempre um pouco específicas para o caso de uso. O fato de seus dados estarem em conformidade com um formato geralmente é mais importante do que os detalhes específicos do formato. Raramente uma tarefa de limpeza de dados é destinada apenas a uma pessoa - a correspondência com um formato definido permite o compartilhamento mais fácil dos dados posteriormente (ou seja, Paulo não precisa se preocupar com nomes - Maria já limpou o conjunto de dados).
O DataFrame do eleitor filtrado que você usou no exercício anterior está disponível em voter_df
. A biblioteca pyspark.sql.functions
está disponível sob o pseudônimo F
.
Este exercício faz parte do curso
Limpeza de dados com o PySpark
Instruções do exercício
- Adicione uma nova coluna chamada
splits
que contém a lista de nomes possíveis. - Use o método
getItem()
e crie uma nova coluna chamadafirst_name
. - Obtenha a última entrada da lista
splits
e crie uma coluna chamadalast_name
. - Elimine a coluna
splits
e mostre a novavoter_df
.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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()