НачатьНачать бесплатно

Изменение столбцов DataFrame

На предыдущем шаге вы отфильтровали строки, не соответствующие формату имён. Теперь, опираясь на проделанную работу, ваш руководитель просит создать два новых столбца — first_name и last_name. Для этого нужно разбить столбец VOTER_NAME на слова по символу пробела. Последнее слово станет last_name, а все остальные — first_name. В этом упражнении вы познакомитесь с новыми функциями: .split(), .size() и .getItem(). Метод .getItem(index) принимает целочисленный аргумент и возвращает элемент столбца с соответствующим индексом. Функции .split() и .size() находятся в библиотеке pyspark.sql.functions.

Обратите внимание: подобные операции всегда зависят от конкретной задачи. Приведение данных к единому формату, как правило, важнее самих деталей этого формата. Очистка данных редко выполняется для одного человека — стандартизованный формат упрощает дальнейшую работу с данными в команде (например, Павлу не нужно беспокоиться об именах — Мария уже привела набор данных в порядок).

Отфильтрованный DataFrame с данными об избирателях из предыдущего упражнения доступен как 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()
Редактировать и запускать код