Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teile ich eine Vektorspalte in PySpark in einzelne Spalten auf?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 12:25:29940Durchsuche

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>

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!

Stellungnahme:
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