Pyspark: Как создать таблицу объединения для некоторых выбранных столбцов из df

#pyspark

#pyspark

Вопрос:

Ниже приведен фрейм данных pyspark —

введите описание изображения здесь

Я хочу преобразовать это в. В основном все 3 столбца идентификаторов расположены рядом друг с другом

введите описание изображения здесь

Я могу сделать это, создав 3 отдельных фрейма данных для каждого из 3 столбцов id, а затем выполнить объединение всех. Но я ищу решение, которое может достичь этого за меньшее количество строк, потому что у меня есть по крайней мере 25 столбцов id в главном файле.

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

1. Не используйте IMAGE!!!!!!!!

Ответ №1:

Попробуйте source_* columns to array затем explode выполнить приведение.

Example:

 df.show()
# --------- ----------------- ----------------- ----------------- -------- 
#|movieName|Source_1_movie_id|Source_2_movie_id|Source_3_movie_id|   genre|
# --------- ----------------- ----------------- ----------------- -------- 
#| example1|          movie_1|          movie_4|          movie_7|  action|
#| example2|          movie_2|          movie_5|          movie_8|thriller|
#| example3|          movie_3|          movie_6|          movie_9| romance|
# --------- ----------------- ----------------- ----------------- -------- 

from pyspark.sql.functions import *

df.selectExpr("moviename","explode(array(Source_1_movie_id,Source_2_movie_id,Source_3_movie_id))","genre").
withColumnRenamed("col","id").
orderBy("id").
show()
# --------- ------- -------- 
#|moviename|     id|   genre|
# --------- ------- -------- 
#| example1|movie_1|  action|
#| example2|movie_2|thriller|
#| example3|movie_3| romance|
#| example1|movie_4|  action|
#| example2|movie_5|thriller|
#| example3|movie_6| romance|
#| example1|movie_7|  action|
#| example2|movie_8|thriller|
#| example3|movie_9| romance|
# --------- ------- --------