Wie teile ich eine Vektorspalte in PySpark in einzelne Spalten auf?

Mary-Kate Olsen
Freigeben: 2024-11-03 12:25:29
Original
939 Leute haben es durchsucht

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

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage