【发布时间】:2021-02-09 19:47:23
【问题描述】:
我有静态列表group_1 和group_2:
group_1 = [a,b,c,d,e,f,g]
group_2 = [h,i,j,k]
我有 pyspark 数据框df1,如下所示。
示例 1:
df1:
+-----+----------------------------------------+-----------------------------------------+
|id |array1 |array2 |
+-----+----------------------------------------+-----------------------------------------+
|id1 |[a,b,c,d,group_1,group_2] |[a,b,c,d,e,f,g,h,i,j,k] |
+-----+----------------------------------------+-----------------------------------------+
输出_df:
+-----+-------------------|-------------------|
|id |col1 |col2 |
+-----+-------------------|-------------------|
|id1 |[a,b,c,d] |[a,b,c,d] |
|id1 |[e,f,g] |group_1 |
|id1 |[h,i,j,k] |group_2 |
+-----+-------------------|-------------------|
实际上,array2 列将包含来自array1 列的元素。这就是我的源数据框 (source_df1) 的样子。
如果我们看到 array1 列,则有单独的元素,如 (a,b,c,d) 以及 group_1 和 group_2 元素,但它们放在一起是不同的。
现在我想通过爆炸来创建 pyspark 数据框,使个人和组元素按output_df 所示进行分类。
Example1 Observation:如果我们看到输出数据框output_df,第二条记录group_1 只有[e,f,g],因为其他元素已经是单个元素的一部分。
示例 2:
source_df1:
+-----+----------------------------------------+-----------------------------------------+
|id |array1 |array2 |
+-----+----------------------------------------+-----------------------------------------+
|id1 |[a,b,group_1,group_2] |[a,b,c,d,e,f,g,h,i,j,k] |
+-----+----------------------------------------+-----------------------------------------+
输出_df:
+-----+-------------------|-------------------|
|id |col1 |col2 |
+-----+-------------------|-------------------|
|id1 |[a,b] |[a,b] |
|id1 |[c,d,e,f,g] |group_1 |
|id1 |[h,i,j,k] |group_2 |
+-----+-------------------|-------------------|
Example2 观察:如果我们看到输出数据框 output_df。第二条记录group_1 只有[c,d,e,f,g],因为其他元素已经是单个元素的一部分。
任何人都可以帮助实现这一目标吗?
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql pyspark-dataframes