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

Comment diviser une colonne vectorielle en colonnes individuelles dans PySpark ?

Mary-Kate Olsen
Libérer: 2024-11-03 12:25:29
original
958 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal