首頁 >後端開發 >Python教學 >如何在 PySpark 中將向量列拆分為單獨的列?

如何在 PySpark 中將向量列拆分為單獨的列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-03 12:25:291033瀏覽

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轉換

一個方法是將DataFrameFrame為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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn