ПочатиПочніть безкоштовно

Вибірка II

Подібно до SQL, ви також можете використовувати метод .select() для операцій над стовппцями. Якщо ви обираєте стовпець у нотації df.colName, можна виконувати будь-які операції над стовппцем, і метод .select() поверне перетворений стовпець. Наприклад,

flights.select(flights.air_time/60)

повертає стовпець із тривалістю польоту в годинах замість хвилин. Ви також можете застосувати метод .alias(), щоб перейменувати вибраний стовпець. Тож, якщо ви хочете .select() стовпець duration_hrs (якого немає у вашому DataFrame), можна зробити так:

flights.select((flights.air_time/60).alias("duration_hrs"))

Еквівалентний метод для Spark DataFrame — .selectExpr(), який приймає SQL-вирази як рядки:

flights.selectExpr("air_time/60 as duration_hrs")

тут ключове слово SQL as є еквівалентом методу .alias(). Щоб вибрати кілька стовппців, передайте кілька рядків.

Пам'ятайте, у вашому середовищі вже створено SparkSession з назвою spark, а також доступний датафрейм Spark flights.

Ця вправа є частиною курсу

Основи PySpark

Переглянути курс

Інструкції до вправи

Створіть таблицю середньої швидкості кожного рейсу двома способами.

  • Обчисліть середню швидкість, поділивши distance на air_time (переведений у години). Використайте метод .alias(), щоб назвати цей стовпець "avg_speed". Збережіть результат у змінній avg_speed.
  • Виберіть стовпці "origin", "dest", "tailnum" і avg_speed (без лапок!). Збережіть це як speed1.
  • Створіть таку саму таблицю за допомогою .selectExpr() і рядка з SQL-виразом. Збережіть це як speed2.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# Define avg_speed
avg_speed = (flights.____/(flights.____/60)).alias("____")

# Select the correct columns
speed1 = flights.select("origin", "dest", "tailnum", avg_speed)

# Create the same table using a SQL expression
speed2 = flights.selectExpr("____", "____", "____", "distance/(air_time/60) as ____")
Редагувати та запускати код