pyspark |将numpy数组列表转换为dataframe中的列

时间:2016-11-02 22:56:05

标签: python numpy pyspark spark-dataframe rdd

我正在尝试使用看起来像这样的rdd:

[< 1x24000类型的稀疏矩阵''         具有压缩稀疏行格式的10个存储元素> ,. 。 。 ]

理想情况下将其转换为如下所示的数据框:

<code>
   +-----------------+
   |  A  |  B  |   C |
   +-----------------+
   | 1.0 | 0.0 | 0.0 |
   +-----+-----+-----+
   | 1.0 | 1.0 | 0.0 |
   +-----+-----+-----+
</code>

然而,我一直这样:

<code>
+---------------+
|             _1|
+---------------+
|[1.0, 0.0, 0.0]|
+---------------+
|[1.0, 1.0, 0.0]|
+---------------+
</code>

我的时间比较长,因为每一行都充满了numpy数组。

我使用此代码从rdd:

创建数据框
<code>res.flatMap(lambda x: np.array(x.todense())).map(list).map(lambda l : Row([float(x) for x in l])).toDF()</code>

**爆炸没有帮助(它将所有内容放在同一列中)

**我尝试在结果数据帧上使用UDF,但我似乎无法将numpy数组分成单个值。

请帮忙!

1 个答案:

答案 0 :(得分:1)

尝试:

.map(lambda l : Row(*[float(x) for x in l]))