Aufteilen einer Vektorspalte in Zeilen in PySpark
In PySpark ist das Aufteilen einer Spalte mit Vektorwerten in separate Spalten für jede Dimension üblich Aufgabe. Dieser Artikel führt Sie durch verschiedene Ansätze, um dies zu erreichen:
Spark 3.0.0 und höher
Spark 3.0.0 führte die Funktion „vector_to_array“ ein und vereinfachte diesen Prozess:
<code class="python">from pyspark.ml.functions import vector_to_array df = df.withColumn("xs", vector_to_array("vector"))</code>
Sie können dann die gewünschten Spalten auswählen:
<code class="python">df.select(["word"] + [col("xs")[i] for i in range(3)])</code>
Spark Less Than 3.0.0
Ansatz 1: Konvertieren zu RDD
<code class="python">def extract(row): return (row.word, ) + tuple(row.vector.toArray().tolist()) df.rdd.map(extract).toDF(["word"]) # Vector values will be named _2, _3, ...</code>
Ansatz 2: Verwenden einer UDF
<code class="python">from pyspark.sql.functions import udf, col from pyspark.sql.types import ArrayType, DoubleType def to_array(col): def to_array_(v): return v.toArray().tolist() return udf(to_array_, ArrayType(DoubleType())).asNondeterministic()(col) df = df.withColumn("xs", to_array(col("vector")))</code>
Wählen Sie die gewünschten Spalten aus:
<code class="python">df.select(["word"] + [col("xs")[i] for i in range(3)])</code>
Nach Wenn Sie eine dieser Methoden anwenden, können Sie eine Vektorspalte effektiv in einzelne Spalten aufteilen, was die Arbeit mit und die Analyse Ihrer Daten erleichtert.
Das obige ist der detaillierte Inhalt vonWie teile ich eine Vektorspalte in PySpark in Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!