我想从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]|
+-----+----------+
答案 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)