Python Pyspark-Groupby和collect在多列上列出并创建多列
我有下面的数据框,我正试图通过它来分组和聚合数据Python Pyspark-Groupby和collect在多列上列出并创建多列,python,dataframe,apache-spark,pyspark,Python,Dataframe,Apache Spark,Pyspark,我有下面的数据框,我正试图通过它来分组和聚合数据 Column_1 Column_2 Column_3 A N1 P1 A N2 P2 A N3 P3 B N1 P1 C N1 P1 C N2 P2 所需输出: Column_1 Column_2 Column_3 A N1,N2,N3 P1,P2,P3 B N1
Column_1 Column_2 Column_3
A N1 P1
A N2 P2
A N3 P3
B N1 P1
C N1 P1
C N2 P2
所需输出:
Column_1 Column_2 Column_3
A N1,N2,N3 P1,P2,P3
B N1 P1
C N1,N2 P1,P2
通过使用分区和groupby创建一个窗口,我可以在一列上完成这项工作。
然后在窗口上使用collect list和groupby并聚合以获得一列。这适用于一个专栏
如何在两列上执行相同的操作。请帮助的函数可以接受多个aggregation函数。您可以添加两次:
df.groupby('Column_1')。agg(F.collect_list('Column_2')、F.collect_list('Column_3'))。orderBy('Column_1')。show()
印刷品
+--------+----------------------+----------------------+
|第1列|收集列表(第2列)|收集列表(第3列)|
+--------+----------------------+----------------------+
|A |[N1,N2,N3]|[P1,P2,P3]|
|B |[N1]|[P1]|
|C |[N1,N2]|[P1,P2]|
+--------+----------------------+----------------------+
对于简单分组,无需使用。按预期工作。是否有一个链接或一篇文章明确说明我们必须使用Windows的哪些场景?在那里我们可以像上面那样使用groupby。这将有助于学习。谢谢,也许会有帮助。根据经验,当我期望操作后的行数保持不变时,我将使用windows;如果我期望结果中的行数低于原始数据集中的行数,我将使用groupBy。