Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teile ich Vektordaten in PySpark in Spalten auf?

Wie teile ich Vektordaten in PySpark in Spalten auf?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 17:22:02786Durchsuche

How to Split Vector Data into Columns in PySpark?

Vektordaten in Spalten in PySpark aufteilen

Das Problem der Konvertierung einer „Vektor“-Spalte mit Vektordaten in mehrere Spalten, eine für jede Die Dimension der Vektoren kommt häufig bei der Datenanalyse und beim maschinellen Lernen vor. Diese Frage befasst sich mit diesem Problem im Kontext von Apache PySpark.

Extraktion mit Spark >= 3.0.0

Für Spark-Versionen 3.0.0 und höher eine vereinfachte Der Ansatz ist mit der Funktion „vector_to_array“ verfügbar:

<code class="python">from pyspark.ml.functions import vector_to_array

(df
 .withColumn("xs", vector_to_array("vector")))
 .select(["word"] + [col("xs")[i] for i in range(3)]))</code>

Dadurch wird eine neue Spalte xs mit einem Array erstellt, das die Elemente des Vektors enthält.

Extraktion mit Spark < 3.0.0

Für Spark-Versionen vor 3.0.0 können die folgenden Methoden verwendet werden:

Konvertieren in RDD und Extrahieren:

Konvertieren Sie den DataFrame in ein RDD und führen Sie eine elementweise Extraktion von Vektorwerten durch:

<code class="python">def extract(row):
    return (row.word, ) + tuple(row.vector.toArray().tolist())

df.rdd.map(extract).toDF(["word"])</code>

UDF-Ansatz:

Definieren Sie eine benutzerdefinierte Funktion (UDF ), um die Vektorspalte in ein Array umzuwandeln:

<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
 .withColumn("xs", to_array(col("vector")))
 .select(["word"] + [col("xs")[i] for i in range(3)]))</code>

Beide dieser Ansätze extrahieren die Vektorelemente in separate Spalten und ermöglichen so eine weitere Analyse und Verwendung.

Das obige ist der detaillierte Inhalt vonWie teile ich Vektordaten in PySpark in 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