Сгруппируйте по столбцам фрейма данных, а затем разбейте результаты, сгруппировав данные по другому столбцу с помощью pyspark

#dataframe #pyspark #group-by

Вопрос:

У меня есть фрейм данных foloowing

 root
 |-- transport_id: integer (nullable = true)
 |-- vehicle_id: integer (nullable = true)
 |-- vehicleName: string (nullable = true)
 |-- Destination: long (nullable = false)
 |-- travelYear: integer (nullable = true)
 

Я хочу узнать лучшие направления в зависимости от года поездки, а затем я хочу разделить лучшие направления на основе названия каждого транспортного средства

например, лучшие направления в зависимости от года путешествия

  --- ----------- ------ ----------- 
|Top|destination|vehicle|travel_year|
 --- ---------   ------ ----------- 
|  1|    SLanka |   5 |       2021|
|  2|    SGapore|   2 |       2021|
|  3|    Malay  |   1 |       2021|
|  4|    Canada |   3 |       2021|
 

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

  --- ----------- -------- ----- ----------- 
|Top|destination|veh_name|count|travel_year|
 --- ---------   -------- ----- ----------- 
|  1|    SLanka |   alto |  3  |       2021|
|  2|    SLanka | premier|  2  |       2021|
|  3|    Malay  |  prius |  1  |       2021|
|  4|    Canada |   benz |  2  |       2021|
|  4|    Canada |  Lambo |  1  |       2021|
 

Вторая таблица должна быть моим окончательным результатом.

Ниже приведен код, который я написал, чтобы получить первые результаты таблицы

 newDf = df.select(df.destination,df.vehicle_name,df.travel_year.groupby('travel_year', 'destination') 
    .agg(count(df.vehicle_name).alias('vehicle')).sort( desc('vehicle') , desc('travel_year') )
    top_destinations = newDf .withColumn('Top',dense_rank().over(Window.partitionBy('travel_year').orderBy(col('vehicle').desc()))) 
 

Но я не уверен, как получить вторую таблицу результатов.

Комментарии:

1. Пожалуйста, опубликуйте свой образец ввода и ожидаемый результат, иначе трудно представить ваши проблемы