如何从多个列表创建pyspark数据框

pan*_*Box 2 python apache-spark-sql pyspark

我想将两个列表转换为pyspark数据框,其中列表分别是列。

我试过了

a=[1, 2, 3, 4]
b=[2, 3, 4, 5]
sqlContext.createDataFrame([a, b], schema=['a', 'b']).show()
Run Code Online (Sandbox Code Playgroud)

但是我得到了

+---+---+---+---+                                                               
|  a|  b| _3| _4|
+---+---+---+---+
|  1|  2|  3|  4|
|  2|  3|  4|  5|
+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)

我真正想要的是:

+---+---+                                                              
|  a|  b|
+---+---+
|  1|  2|
|  2|  3|
|  3|  4|
|  4|  5|
+---+---+
Run Code Online (Sandbox Code Playgroud)

是否有方便的方法来创建此结果?

faf*_*afl 7

只需转置列表:

sqlContext.createDataFrame(zip(a, b), schema=['a', 'b']).show()
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 5

我不直接了解 pyspark,但我猜测不是这个数据结构:

[[1, 2, 3, 4],
 [2, 3, 4, 5]]
Run Code Online (Sandbox Code Playgroud)

你需要给它这个

[[1, 2],
 [2, 3],
 [3, 4],
 [4, 5]]
Run Code Online (Sandbox Code Playgroud)

从数据结构到所需数据的一种解释方法是使用 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()
Run Code Online (Sandbox Code Playgroud)