PySpark 数据帧聚合

问题描述 投票:0回答:1

我正在使用spark 3.4版本,创建了一个下面的数据框

df.show()

ID --> 字符串 输出 ---> 布尔值

ID      output

AA      true
AA      false
BB      true
BB      true
CC      true
CC      false
CC      true

我想在 ID 列上应用 groupby 并聚合输出列上的值(如果每个 ID 的输出列中的所有值均为 true,则应返回 true,否则返回 false)

预期输出为

ID  result

AA  false
BB  true
CC  false

使用 pyspark 获得所需输出的最佳方法是什么(Windows 函数/UDF)?我感谢您的帮助!

python pyspark apache-spark-sql
1个回答
0
投票

这个场景我们需要使用group by,所以udf不是必需的。

from pyspark.sql import functions as F

result_df = df.groupBy("ID").agg(F.min("output").alias("result"))
result_df.show()

输出:

+---+------+
| ID|result|
+---+------+
| AA| false|
| BB| true |
| CC| false|
+---+------+

使用 Spark sql 也可以完成相同的操作,

SELECT ID, MIN(output) AS result
FROM my_table
GROUP BY ID;
© www.soinside.com 2019 - 2024. All rights reserved.