如何在 PySpark 中将向量列拆分为单独的列?

Mary-Kate Olsen
发布: 2024-11-03 12:25:29
原创
939 人浏览过

How to Split a Vector Column into Individual Columns in PySpark?

PySpark:将向量拆分为列

在 PySpark 中,您可能会遇到带有向量列的 DataFrame,并且需要将其拆分为多个列,每个维度一个。实现方法如下:

For Spark >= 3.0.0

从 Spark 3.0.0 开始,提取向量分量的便捷方法是使用 vector_to_array 函数:

<code class="python">df = df.withColumn("xs", vector_to_array("vector"))

# Pick the first three dimensions for illustration
result = df.select(["word"] + [col("xs")[i] for i in range(3)])</code>
登录后复制

对于 Spark 3.0.0

方法1:RDD转换

一种方法是将DataFrame转换为RDD并手动提取向量分量:
<code class="python">rdd = df.rdd.map(lambda row: (row.word, ) + tuple(row.vector.toArray().tolist()))
result = rdd.toDF(["word"])</code>
登录后复制

方法 2:创建 UDF

或者,您可以创建用户定义函数 (UDF) 并将其应用到向量列:
<code class="python">@udf(ArrayType(DoubleType()))
def to_array(vector):
    return vector.toArray().tolist()

result = df.withColumn("xs", to_array(col("vector"))).select(["word"] + [col("xs")[i] for i in range(3)])</code>
登录后复制

以上是如何在 PySpark 中将向量列拆分为单独的列?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板