火花 |将 numpy 数组列表转换为数据框中的列
pyspark | transforming list of numpy arrays into columns in dataframe
我正在尝试使用如下所示的 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 数组分成单独的值。
请帮忙!
尝试:
.map(lambda l : Row(*[float(x) for x in l]))
我正在尝试使用如下所示的 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 数组分成单独的值。
请帮忙!
尝试:
.map(lambda l : Row(*[float(x) for x in l]))