如何将Spark Dataframe中的列从矢量转换为集合?
问题描述:
我需要处理一个数据集来识别频繁项目集。所以输入栏必须是一个向量。原来列是由逗号分隔的项目的字符串,所以我做了以下:如何将Spark Dataframe中的列从矢量转换为集合?
functions.split(out_1['skills'], ',')
的问题是在skills
的,对于一些行,我已经重复值,并试图当这是造成错误识别频繁项目集。
我想在矢量转换成一组去除重复的元素。事情是这样的:
functions.to_set(functions.split(out_1['skills'], ','))
但我找不到一个函数来一列从矢量设置,即转换,没有to_set
功能。
我怎么能做到我想要的东西,即移除载体复制的元素呢?
答
您可以使用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]|
+-------+-------------+