2017-10-08 233 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]| 
+-------+-------------+ 
相关问题