Python 如何将Spark数据帧列从矢量转换为集合?
我需要处理一个数据集来识别频繁的项目集。所以输入列必须是一个向量。原始列是一个字符串,其中的项用逗号分隔,因此我执行了以下操作:Python 如何将Spark数据帧列从矢量转换为集合?,python,set,pyspark,data-conversion,pyspark-sql,Python,Set,Pyspark,Data Conversion,Pyspark Sql,我需要处理一个数据集来识别频繁的项目集。所以输入列必须是一个向量。原始列是一个字符串,其中的项用逗号分隔,因此我执行了以下操作: functions.split(out_1['skills'], ',') 问题是,对于某些行,我在技能中有重复的值,这会在尝试识别频繁项集时导致错误 我想将向量转换为一个集合,以删除重复的元素。大概是这样的: functions.to_set(functions.split(out_1['skills'], ',')) 但是我找不到一个函数来将一列从向量转换为集
functions.split(out_1['skills'], ',')
问题是,对于某些行,我在技能中有重复的值,这会在尝试识别频繁项集时导致错误
我想将向量转换为一个集合,以删除重复的元素。大概是这样的:
functions.to_set(functions.split(out_1['skills'], ','))
但是我找不到一个函数来将一列从向量转换为集合,也就是说,没有到_set
函数
如何实现我想要的,即从向量中删除重复的元素?您可以使用函数将python中的set
函数转换为udf。udf(set)
然后将其应用于数组列:
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]|
+-------+-------------+