Сохранение значений кратных столбцов в фрейме данных pyspark в новом столбце

Я импортирую данные из файла csv, где у меня есть столбцы Reading1 и Reading2, и сохраняю их в фреймворке pyspark. Моя цель - получить новое имя столбца Reading и его значение в виде массива, содержащего значения Reading1 и Reading2. Как мне добиться того же в pyspark.

        +---+-----------+-----------+
        | id|  Reading A|  Reading B| 
        +---+-----------------------+
        |01 |  0.123    |   0.145   | 
        |02 |  0.546    |   0.756   |
        +---+-----------+-----------+

        Desired Output:
        +---+------------------+
        | id|    Reading       |
        +---+------------------+
        |01 |  [0.123, 0.145]  |
        |02 |  [0.546, 0.756   |
        +---+------------------+-


person Saikat    schedule 21.09.2019    source источник
comment
Используйте array или struct.   -  person pault    schedule 22.09.2019
comment
spark.apache. org / docs / 2.4.0 / api / python /   -  person jxc    schedule 22.09.2019


Ответы (1)


попробуй это

импортировать pyspark.sql.functions как f

df.withColumn ('чтение', f.array ([f.col ("чтение a"), f.col ("чтение b")]))

person kranthi kumar    schedule 22.09.2019
comment
после использования этого решения я не получаю никаких ошибок от искры, но новые столбцы не добавляются в существующий df, который я также пробовал ниже, но тот же результат df.withColumn ('reading', f.array ([lit (df.readingA), горит (df.readingB)) - person Saikat; 10.10.2019
comment
да, приведенный выше код добавляет новый столбец к существующему df. ты этого не хочешь? - person kranthi kumar; 11.10.2019
comment
Решение теперь работает нормально. Раньше он просто возвращал мне пустой фрейм данных, поэтому я опубликовал, поскольку он не отражал, даже когда я не получал никаких ошибок. - person Saikat; 14.10.2019