PySpark groupBy 和多列聚合函数

发布于 2025-01-11 18:11:40 字数 474 浏览 0 评论 0原文

我使用 Spark Dataframe 并尝试使用 groupby 创建一个带有聚合的新表: 我的数据示例: 输入图片此处的描述

这是所需的结果: 输入图片此处描述

我尝试了此代码 data.groupBy("id1").agg(countDistinct("id2").alias("id2"), sum("value").alias("value"))

有人可以帮忙吗?谢谢

I work with a spark Dataframe and I try to create a new table with aggregation using groupby :
My data example :
enter image description here

and this is the desired result :
enter image description here

I tried this code data.groupBy("id1").agg(countDistinct("id2").alias("id2"), sum("value").alias("value"))

Anyone can help please ? Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

脱离于你 2025-01-18 18:11:40

尝试使用以下代码 -

from pyspark.sql.functions import *

df = spark.createDataFrame([('id11', 'id21', 1), ('id11', 'id22', 2), ('id11', 'id23', 3), ('id12', 'id21', 2), ('id12', 'id23', 1), ('id13', 'id23', 2), ('id13', 'id21', 8)], ["id1", "id2","value"])

聚合数据 -

df.groupBy("id1").agg(count("id2"),sum("value")).show()

输出 -

+----+----------+----------+
| id1|count(id2)|sum(value)|
+----+----------+----------+
|id11|         3|         6|
|id12|         2|         3|
|id13|         2|        10|
+----+----------+----------+

Try using below code -

from pyspark.sql.functions import *

df = spark.createDataFrame([('id11', 'id21', 1), ('id11', 'id22', 2), ('id11', 'id23', 3), ('id12', 'id21', 2), ('id12', 'id23', 1), ('id13', 'id23', 2), ('id13', 'id21', 8)], ["id1", "id2","value"])

Aggregated Data -

df.groupBy("id1").agg(count("id2"),sum("value")).show()

Output -

+----+----------+----------+
| id1|count(id2)|sum(value)|
+----+----------+----------+
|id11|         3|         6|
|id12|         2|         3|
|id13|         2|        10|
+----+----------+----------+
烟雨扶苏 2025-01-18 18:11:40

以下是如何使用 PySpark 对多列进行 groupBy 的解决方案:

import pyspark.sql.functions as F
from pyspark.sql.functions import col

df.groupBy("id1").agg(F.count(col("id2")).alias('id2_count'),                     
                      F.sum(col('value')).alias("value_sum")).show()

Here's a solution of how to groupBy with multiple columns using PySpark:

import pyspark.sql.functions as F
from pyspark.sql.functions import col

df.groupBy("id1").agg(F.count(col("id2")).alias('id2_count'),                     
                      F.sum(col('value')).alias("value_sum")).show()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文