Как конвертировать таблицу со столбцом, имеющим два значения (разделить на,), разделить ее на два значения в два в pyspark? - PullRequest
0 голосов
/ 18 марта 2019

df.printSchema ()

root
 |-- range: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- a: long (nullable = true)
 |    |    |-- b: string (nullable = true)

df.show ()

+------------+
|    range   |
+------------+
|[[3, Hello]]|
+------------+

Мой желаемый вывод

+------------+
|  a  |  b   |
+------------+
|  3  | Hello|
+------------+

Преобразовать таблицу со столбцом, имеющим два значения (разделить на,), разделить его на два значения на два

1 Ответ

1 голос
/ 18 марта 2019

Это ответ Scala от пользователя pyspark:

import pyspark.sql.functions as F
j = '{"range":[{"a":3,"b":"Hello"}]}'
df = spark.read.json(sc.parallelize([j]))

#This convertes the array column to a struct column
df=df.withColumn('exploded', F.explode('range'))
#and the columns of a struct can easily by selected with * 
df.select('exploded.*').show()

Вы также можете сделать это с помощью oneliner:

df.select(F.explode('range')).select('col.*').show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...