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 的成员
如何按 Seq[org.apache.spark.sql.Column] 降序排序 spark DataFrame?