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。