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中文網其他相關文章!