Spark DataFrame преобразует несколько строк в столбец
Я новичок, чтобы зажечь, и я хочупреобразование нижеисходный фрейм данных (загрузить из файла JSON):
+--+-----+-----+
|A |count|major|
+--+-----+-----+
| a| 1| m1|
| a| 1| m2|
| a| 2| m3|
| a| 3| m4|
| b| 4| m1|
| b| 1| m2|
| b| 2| m3|
| c| 3| m1|
| c| 4| m3|
| c| 5| m4|
| d| 6| m1|
| d| 1| m2|
| d| 2| m3|
| d| 3| m4|
| d| 4| m5|
| e| 4| m1|
| e| 5| m2|
| e| 1| m3|
| e| 1| m4|
| e| 1| m5|
+--+-----+-----+
В нижефрейм данных результата:
+--+--+--+--+--+--+
|A |m1|m2|m3|m4|m5|
+--+--+--+--+--+--+
| a| 1| 1| 2| 3| 0|
| b| 4| 2| 1| 0| 0|
| c| 3| 0| 4| 5| 0|
| d| 6| 1| 2| 3| 4|
| e| 4| 5| 1| 1| 1|
+--+--+--+--+--+--+
ЗдесьПравило трансформации:
Результирующий фрейм данных состоит изA + (n major columns)
гдеmajor
имена столбцов указываются с помощью:
sorted(src_df.map(lambda x: x[2]).distinct().collect())
Фрейм данных результата содержитm
строки, где значения дляA
столбец предоставлен:
sorted(src_df.map(lambda x: x[0]).distinct().collect())
Значение для каждого основного столбца в результирующем фрейме данных - это значение из исходного фрейма данных на соответствующемA
и основной (например, число в строке 1 в исходном кадре данных отображается наbox
гдеA
являетсяa
и колонкаm1
)
СочетанияA
а такжеmajor
в исходном фрейме данных нет дублирования (пожалуйста, рассмотрите его как первичный ключ в двух столбцах в SQL)