Maison  >  Article  >  développement back-end  >  Comment diviser une colonne vectorielle en colonnes individuelles dans PySpark ?

Comment diviser une colonne vectorielle en colonnes individuelles dans PySpark ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-03 12:25:29940parcourir

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

PySpark : diviser le vecteur en colonnes

Dans PySpark, vous pouvez rencontrer un DataFrame avec une colonne vectorielle et la nécessité de le diviser en plusieurs colonnes, une pour chaque dimension. Voici comment y parvenir :

Pour Spark >= 3.0.0

À partir de Spark 3.0.0, un moyen pratique d'extraire des composants vectoriels consiste à utiliser la fonction vector_to_array :

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

Pour Spark < 3.0.0

Méthode 1 : Conversion RDD

Une approche consiste à convertir le DataFrame en RDD et à extraire manuellement les composants vectoriels :

<code class="python">rdd = df.rdd.map(lambda row: (row.word, ) + tuple(row.vector.toArray().tolist()))
result = rdd.toDF(["word"])</code>

Méthode 2 : Création UDF

Vous pouvez également créer une fonction définie par l'utilisateur (UDF) et l'appliquer à la colonne vectorielle :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn