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")
           )