【发布时间】:2021-05-07 18:17:36
【问题描述】:
我有一个 Spark DataFrame,比如df,我需要对其应用 GroupBy col1,通过最大值 col2 聚合并传递 col3 的相应值(与groupBy 或聚合)。最好用一个例子来说明。
df.show()
+-----+-----+-----+
| col1| col2| col3|
+-----+-----+-----+
| 1| 500| 10 |
| 1| 600| 11 |
| 1| 700| 12 |
| 2| 600| 14 |
| 2| 800| 15 |
| 2| 650| 17 |
+-----+-----+-----+
我可以很容易地执行groupBy和聚合以获得col2中每个组的最大值,使用
import pyspark.sql.functions as F
df1 = df.groupBy("col1").agg(
F.max("col2").alias('Max_col2')).show()
+-----+---------+
| col1| Max_col2|
+-----+---------+
| 1| 700|
| 2| 800|
+-----+---------+
但是,我正在努力并且想做的是另外传递col3的相应值,从而获得下表:
+-----+---------+-----+
| col1| Max_col2| col3|
+-----+---------+-----+
| 1| 700| 12 |
| 2| 800| 15 |
+-----+---------+-----+
有谁知道如何做到这一点?
非常感谢,
马里奥安萨斯
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql