Heim > Backend-Entwicklung > Python-Tutorial > Wie teile ich eine Vektorspalte in PySpark in Zeilen auf?

Wie teile ich eine Vektorspalte in PySpark in Zeilen auf?

Patricia Arquette
Freigeben: 2024-10-31 20:10:01
Original
527 Leute haben es durchsucht

How to Split a Vector Column into Rows in PySpark?

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

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

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

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

Wählen Sie die gewünschten Spalten aus:

<code class="python">df.select(["word"] + [col("xs")[i] for i in range(3)])</code>
Nach dem Login kopieren
Nach dem Login kopieren

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!

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