PySpark 中每组的平均值
Avarage per group in PySpark
我有下面的 PySpark 数据框:
cust | amount |
----------------
A | 5 |
A | 1 |
A | 3 |
B | 4 |
B | 4 |
B | 2 |
C | 2 |
C | 1 |
C | 7 |
C | 5 |
我需要按列分组 'cust'
并计算每组的平均值。
预期结果:
cust | avg_amount
-------------------
A | 3
B | 3.333
C | 7.5
我一直在使用下面的代码,但给了我错误。
data.withColumn("avg_amount", F.avg("amount"))
知道如何才能达到这个平均值吗?
使用groupBy
统计客户的交易笔数和amount
的平均值:
from pyspark.sql import functions as F
data = data.groupBy("cust")\
.agg(
F.count("*").alias("amount"),
F.avg("amount").alias("avg_amount")
)
我有下面的 PySpark 数据框:
cust | amount |
----------------
A | 5 |
A | 1 |
A | 3 |
B | 4 |
B | 4 |
B | 2 |
C | 2 |
C | 1 |
C | 7 |
C | 5 |
我需要按列分组 'cust'
并计算每组的平均值。
预期结果:
cust | avg_amount
-------------------
A | 3
B | 3.333
C | 7.5
我一直在使用下面的代码,但给了我错误。
data.withColumn("avg_amount", F.avg("amount"))
知道如何才能达到这个平均值吗?
使用groupBy
统计客户的交易笔数和amount
的平均值:
from pyspark.sql import functions as F
data = data.groupBy("cust")\
.agg(
F.count("*").alias("amount"),
F.avg("amount").alias("avg_amount")
)