Модифікація стовпців DataFrame
Раніше ви відфільтрували всі рядки, які не відповідали чомусь схожому на ім'я. Тепер, спираючись на попередню роботу, ваша менеджерка попросила вас створити два нові стовпці — first_name і last_name. Вона просить розбити стовпець VOTER_NAME на слова за будь-яким пробільним символом. Останнє слово вважайте last_name, а всі інші — first_name. У цій вправі ви використаєте нові функції: .split(), .size() та .getItem(). Метод .getItem(index) приймає ціле число та повертає відповідний за номером елемент у стовпці. Функції .split() і .size() знаходяться в бібліотеці pyspark.sql.functions.
Зауважте, що такі операції завжди дещо залежать від конкретного сценарію. Важливо, щоб дані відповідали узгодженому формату — це часто важливіше за дрібні деталі самого формату. Завдання з очищення даних рідко робиться для однієї людини: узгоджений формат полегшує подальший обмін даними (тобто, Павлові не доведеться перейматись іменами — Марія вже прочистила набір даних).
Відфільтрований датафрейм виборців з попередньої вправи доступний як voter_df. Бібліотека pyspark.sql.functions доступна під псевдонімом F.
Ця вправа є частиною курсу
Очищення даних у PySpark
Інструкції до вправи
- Додайте новий стовпець
splits, що міститиме список можливих імен. - Використайте метод
getItem()і створіть новий стовпецьfirst_name. - Візьміть останній елемент списку
splitsі створіть стовпецьlast_name. - Видаліть стовпець
splitsі виведіть оновленийvoter_df.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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()