Я хотел бы преобразовать два списка в фрейм данных 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|
+---+---+
Есть ли удобный способ создания этого результата?
Просто переставьте списки:
sqlContext.createDataFrame(zip(a, b), schema=['a', 'b']).show()
Я не знаю о 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()