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 중국어 웹사이트의 기타 관련 기사를 참조하세요!