Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Membahagikan Lajur Vektor kepada Lajur Individu dalam PySpark?

Bagaimana untuk Membahagikan Lajur Vektor kepada Lajur Individu dalam PySpark?

Mary-Kate Olsen
Lepaskan: 2024-11-03 12:25:29
asal
958 orang telah melayarinya

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

PySpark: Pisahkan Vektor Kepada Lajur

Dalam PySpark, anda mungkin menemui DataFrame dengan lajur vektor dan keperluan untuk membahagikannya kepada beberapa lajur, satu untuk setiap dimensi. Begini cara untuk mencapainya:

Untuk Spark >= 3.0.0

Bermula dari Spark 3.0.0, cara mudah untuk mengekstrak komponen vektor menggunakan fungsi 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>
Salin selepas log masuk

Untuk Spark < 3.0.0

Kaedah 1: Penukaran RDD

Satu pendekatan melibatkan penukaran DataFrame kepada RDD dan mengekstrak komponen vektor secara manual:

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

Kaedah 2: Penciptaan UDF

Sebagai alternatif, anda boleh mencipta fungsi takrif pengguna (UDF) dan gunakannya pada lajur vektor:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Membahagikan Lajur Vektor kepada Lajur Individu dalam PySpark?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan