Apache Spark Dataframe Groupby agg() 用于多列

Posted

技术标签:

【中文标题】Apache Spark Dataframe Groupby agg() 用于多列【英文标题】:Apache Spark Dataframe Groupby agg() for multiple columns 【发布时间】:2017-03-17 06:21:52 【问题描述】:

我有一个DataFrame 3 列,即Id, First Name, Last Name

我想在Id的基础上申请GroupBy,并想将First Name, Last Name列为列表。

示例:- 我有一个这样的 DF

+---+-------+--------+
|id |fName  |lName   |
+---+-------+--------+
|1  |Akash  |Sethi   |
|2  |Kunal  |Kapoor  |
|3  |Rishabh|Verma   |
|2  |Sonu   |Mehrotra|
+---+-------+--------+

我想要这样的输出

+---+-------+--------+--------------------+
|id |fname           |lName               |
+---+-------+--------+--------------------+
|1  |[Akash]         |[Sethi]             |
|2  |[Kunal, Sonu]   |[Kapoor, Mehrotra]  |
|3  |[Rishabh]       |[Verma]             |
+---+-------+--------+--------------------+

提前致谢

【问题讨论】:

【参考方案1】:

您可以像这样聚合多个列:

df.groupBy("id").agg(collect_list("fName"), collect_list("lName"))

它会给你预期的结果。

【讨论】:

感谢人,简单而干净,仍然可以节省时间在 python 中手动执行此操作(在我的情况下) 很高兴您发现此答案有帮助!

以上是关于Apache Spark Dataframe Groupby agg() 用于多列的主要内容,如果未能解决你的问题,请参考以下文章

值 createGlobalTempView 不是 apache.org.spark.sql.DataFrame 的成员

在 Apache Spark 中拆分 DataFrame

Spark Rdd DataFrame操作汇总

如何按 Seq[org.apache.spark.sql.Column] 降序排序 spark DataFrame?

如何在 Apache Spark ML API 中从“DataFrame”创建一个“Vector”?

Apache Spark 在 DataFrame 中插入多行