PySpark でベクター列を個々の列に分割するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-03 12:25:29
オリジナル
941 人が閲覧しました

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

PySpark: ベクトルを列に分割する

PySpark では、ベクトル列を持つ DataFrame が発生し、それを複数に分割する必要がある場合があります。列。各次元に 1 つずつあります。これを実現する方法は次のとおりです。

Spark >= 3.0.0

Spark 3.0.0 以降、ベクトル コンポーネントを抽出する便利な方法は、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>
ログイン後にコピー

Spark の場合 3.0.0

方法 1:RDD 変換

1 つのアプローチには、DataFrame を RDD に変換し、ベクトル コンポーネントを手動で抽出することが含まれます。
<code class="python">rdd = df.rdd.map(lambda row: (row.word, ) + tuple(row.vector.toArray().tolist()))
result = rdd.toDF(["word"])</code>
ログイン後にコピー

方法 2: UDF の作成

または、ユーザー定義関数 (UDF) を作成し、それをベクター列に適用することもできます:
<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>
ログイン後にコピー

以上がPySpark でベクター列を個々の列に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート