2017-10-08 121 views
0

我需要處理一個數據集來識別頻繁項目集。所以輸入欄必須是一個向量。原來列是由逗號分隔的項目的字符串,所以我做了以下:如何將Spark Dataframe中的列從矢量轉換爲集合?

functions.split(out_1['skills'], ',') 

的問題是在skills的,對於一些行,我已經重複值,並試圖當這是造成錯誤識別頻繁項目集。

我想在矢量轉換成一組去除重複的元素。事情是這樣的:

functions.to_set(functions.split(out_1['skills'], ',')) 

但我找不到一個函數來一列從矢量設置,即轉換,沒有to_set功能。

我怎麼能做到我想要的東西,即移除載體複製的元素呢?

回答

2

您可以使用Python中functions.udf(set)轉換set功能的UDF,然後將其應用到陣列列:

df.show() 
+-------+ 
| skills| 
+-------+ 
|a,a,b,c| 
| a,b,c| 
|c,d,e,e| 
+-------+ 

import pyspark.sql.functions as F 
df.withColumn("unique_skills", F.udf(set)(F.split(df.skills, ","))).show() 
+-------+-------------+ 
| skills|unique_skills| 
+-------+-------------+ 
|a,a,b,c| [a, b, c]| 
| a,b,c| [a, b, c]| 
|c,d,e,e| [c, d, e]| 
+-------+-------------+ 
相關問題