Как создать фрейм данных pyspark из нескольких списков

1

Я хотел бы преобразовать два списка в фрейм данных pyspark, где списки представляют собой соответствующие столбцы.

Я старался

a=[1, 2, 3, 4]
b=[2, 3, 4, 5]
sqlContext.createDataFrame([a, b], schema=['a', 'b']).show()

Но я получил

+---+---+---+---+                                                               
|  a|  b| _3| _4|
+---+---+---+---+
|  1|  2|  3|  4|
|  2|  3|  4|  5|
+---+---+---+---+

Я действительно хочу, чтобы это:

+---+---+                                                              
|  a|  b|
+---+---+
|  1|  2|
|  2|  3|
|  3|  4|
|  4|  5|
+---+---+

Есть ли удобный способ создания этого результата?

Теги:
apache-spark-sql
pyspark

2 ответа

4
Лучший ответ

Просто переставьте списки:

sqlContext.createDataFrame(zip(a, b), schema=['a', 'b']).show()
  • 0
    Спасибо вам большое!
2

Я не знаю о pyspark напрямую, но я бы предпочел вместо этой структуры данных:

[[1, 2, 3, 4],
 [2, 3, 4, 5]]

вам нужно дать это

[[1, 2],
 [2, 3],
 [3, 4],
 [4, 5]]

Пояснительный способ перехода от вашей структуры данных к тому, что требуется, - использовать numpy для транспонирования:

import numpy as np
a=[1, 2, 3, 4]
b=[2, 3, 4, 5]
sqlContext.createDataFrame((np.array([a, b])).T, schema=['a', 'b']).show()
  • 1
    Возможно, вы захотите сделать это, если ваши данные будут иметь значительный размер. И вы, вероятно, захотите пойти дальше и не использовать списки в первую очередь, вместо этого ваши данные с самого начала будут размещаться в виде массивных массивов.
  • 1
    добавьте к этому, если ваши данные не имеют значительного размера, тогда зачем вообще использовать spark?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню