将numpy(NxM)矩阵转换为具有N行和1列且具有数组数据的(Nx1)pyspark数据帧

时间:2019-07-01 23:14:16

标签: pyspark

我想从NxM numpy矩阵制作pyspark数据框。该数据框应具有N行,但只有1列包含大小为(1xM)的数组数据。

我尝试将NxM numpy矩阵转换为熊猫数据框。但是,原始矩阵的大小很大(1M x 2000),需要进行进一步的下游操作,并且只有能够为numpy矩阵创建pyspark数据帧,我才能工作。

例如

我想转换下面的矩阵

m = np.array([[1, 2], [11, 22], [111, 222]) 

到看起来像的pyspark数据框

+-----+----------+
|index|    array |
+-----+----------+
|    0|    [1, 2]|
|    2|  [11, 22]|
|    3|[111, 222]|
+-----+----------+

1 个答案:

答案 0 :(得分:0)

如先前在my comment中所述,您可以使用enumerate获得所需的结果:

m = np.array([[1, 2], [11, 22], [111, 222]]) 
df = spark.createDataFrame(enumerate(m.tolist()), ["index", "array"])
df.show()
#+-----+----------+
#|index|     array|
#+-----+----------+
#|    0|    [1, 2]|
#|    1|  [11, 22]|
#|    2|[111, 222]|
#+-----+----------+

以及相应的架构:

df.printSchema()
#root
# |-- index: long (nullable = true)
# |-- array: array (nullable = true)
# |    |-- element: long (containsNull = true)