Maison > Article > développement back-end > Comment diviser une colonne vectorielle en colonnes individuelles dans 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!