Heim > Artikel > Backend-Entwicklung > Wie teile ich eine Vektorspalte in PySpark in einzelne Spalten auf?
PySpark: Vektor in Spalten aufteilen
In PySpark stoßen Sie möglicherweise auf einen DataFrame mit einer Vektorspalte und müssen diese in mehrere aufteilen Spalten, eine für jede Dimension. So erreichen Sie dies:
Für Spark >= 3.0.0
Ab Spark 3.0.0 ist die Verwendung der Funktion „vector_to_array“ eine bequeme Möglichkeit, Vektorkomponenten zu extrahieren :
<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>
Für Spark < 3.0.0
Methode 1:RDD-Konvertierung
Ein Ansatz besteht darin, den DataFrame in ein RDD zu konvertieren und die Vektorkomponenten manuell zu extrahieren:
<code class="python">rdd = df.rdd.map(lambda row: (row.word, ) + tuple(row.vector.toArray().tolist())) result = rdd.toDF(["word"])</code>
Methode 2: UDF Erstellung
Alternativ können Sie eine benutzerdefinierte Funktion (UDF) erstellen und diese auf die Vektorspalte anwenden:
<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>
Das obige ist der detaillierte Inhalt vonWie teile ich eine Vektorspalte in PySpark in einzelne Spalten auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!