>  기사  >  백엔드 개발  >  PySpark에서 벡터 열을 행으로 분할하는 방법은 무엇입니까?

PySpark에서 벡터 열을 행으로 분할하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-31 20:10:01406검색

How to Split a Vector Column into Rows in PySpark?

PySpark에서 벡터 열을 행으로 분할

PySpark에서는 벡터 값이 포함된 열을 각 차원에 대한 별도의 열로 분할하는 것이 일반적입니다. 일. 이 문서에서는 이를 달성하기 위한 다양한 접근 방식을 안내합니다.

Spark 3.0.0 이상

Spark 3.0.0에서는 vector_to_array 함수를 도입하여 이 프로세스를 단순화했습니다.

<code class="python">from pyspark.ml.functions import vector_to_array

df = df.withColumn("xs", vector_to_array("vector"))</code>

그런 다음 원하는 열을 선택할 수 있습니다.

<code class="python">df.select(["word"] + [col("xs")[i] for i in range(3)])</code>

Spark Less Than 3.0.0

접근 방법 1: 변환 RDD로

<code class="python">def extract(row):
    return (row.word, ) + tuple(row.vector.toArray().tolist())

df.rdd.map(extract).toDF(["word"])  # Vector values will be named _2, _3, ...</code>

접근 방법 2: UDF 사용

<code class="python">from pyspark.sql.functions import udf, col
from pyspark.sql.types import ArrayType, DoubleType

def to_array(col):
    def to_array_(v):
        return v.toArray().tolist()
    return udf(to_array_, ArrayType(DoubleType())).asNondeterministic()(col)

df = df.withColumn("xs", to_array(col("vector")))</code>

원하는 열 선택:

<code class="python">df.select(["word"] + [col("xs")[i] for i in range(3)])</code>

by 이러한 방법 중 하나를 구현하면 벡터 열을 개별 열로 효과적으로 분할할 수 있으므로 데이터 작업 및 분석이 더 쉬워집니다.

위 내용은 PySpark에서 벡터 열을 행으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.