Совместите два столбца PySpark df, используя информацию из двух других столбцов - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть четыре столбца в моем фрейме данных PySpark:

'drivers','cars','topSpeeds','dates' 

Предположим, что каждый водитель достиг разных максимальных скоростей на разных автомобилях в разные даты, а разные машины достигли разных максимальных скоростей с разными гонщиками в разные даты..

Я могу взять среднее значение максимальных скоростей для водителя для каждого автомобиля за все даты следующим образом:

df.groupBy("drivers").mean()

Я думаю, что это работает без указания того, что я усредняю ​​по topSpeed, потому чтоtopSpeed ​​- единственный столбец с числовыми значениями.

Аналогичным образом я могу получить среднее значение максимальных скоростей для автомобиля с каждым водителем за все даты:

df.groupBy("cars").mean()

Теперь я хочу сравнитьсредние значения каждого водителя с каждым автомобилем за каждую дату, поэтому я хочу таблицу, в которой водители - это столбцы, а автомобили - строки, а каждая запись в таблице - это среднее значение этого водителя с этим конкретным автомобилем.

Можете ли вы придумать, как сделать эту таблицу в PySpark?

1 Ответ

0 голосов
/ 20 февраля 2019

Просто сделай это

import pyspark.sql.functions as F

df_gb = df.groupBy('drivers', 'cars').agg(F.mean('topSpeeds').alias('avg_topSpeeds'))

df_out = df_gb.groupBy('cars').pivot('drivers').agg(F.max('avg_topSpeeds'))
...