У меня есть pyspark df, схема которого выглядит следующим образом
root
|-- company: struct (nullable = true)
| |-- 0: string (nullable = true)
| |-- 1: string (nullable = true)
| |-- 10: string (nullable = true)
| |-- 100: string (nullable = true)
| |-- 101: string (nullable = true)
| |-- 102: string (nullable = true)
| |-- 103: string (nullable = true)
| |-- 104: string (nullable = true)
| |-- 105: string (nullable = true)
| |-- 106: string (nullable = true)
| |-- 107: string (nullable = true)
| |-- 108: string (nullable = true)
| |-- 109: string (nullable = true)
Я хочу, чтобы окончательный формат этого кадра данных выглядел следующим образом
id name
0 "foo"
1 "laa"
10 "bar"
100 "gee"
101 "yoo"
102 "koo"
вместо
0 1 10 100 101 102
"foo" "laa" "bar" "gee" "yoo" "koo"
это то, что я получаю, используя расширение 'col. *'
Я нашел ответ по этой ссылке Как разбить StructType на строки из json в кадре данных в Spark, а не на столбцы
но это scala искра, а не pyspark. Я не знаком с концепцией сокращения карты, чтобы сам поменять сценарий на pyspark.
Я прикрепляю образец кадра данных в аналогичной схеме и структуре ниже ..
from pyspark.sql import *
Employee = Row('employee1', 'employee2', 'employee3', 'employee4', 'employee5')
Salaries = Row('100000', '120000', '140000', '160000', '160000')
departmentWithEmployees1 = Row(employees=[Employee, Salaries])
departmentsWithEmployees_Seq = [departmentWithEmployees1]
dframe = spark.createDataFrame(departmentsWithEmployees_Seq)
dframe.show()
Структура структуры этот фрейм данных похож на этот
root
|-- employees: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- _1: string (nullable = true)
| | |-- _2: string (nullable = true)
| | |-- _3: string (nullable = true)
| | |-- _4: string (nullable = true)
| | |-- _5: string (nullable = true)
Как я хочу, чтобы мой окончательный фрейм данных был таким
Firstname Salary
employee1 10000
employee2 120000