PySpark中的每组平均值
我有PySpark数据框,如下所示:PySpark中的每组平均值,pyspark,apache-spark-sql,average,Pyspark,Apache Spark Sql,Average,我有PySpark数据框,如下所示: cust | amount | ---------------- A | 5 | A | 1 | A | 3 | B | 4 | B | 4 | B | 2 | C | 2 | C | 1 | C | 7 | C
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(“平均金额”),F.avg(“金额”)
你知道我如何计算这个平均值吗?使用
groupBy
按客户统计交易数量和金额的平均值:
from pyspark.sql import functions as F
data = data.groupBy("cust")\
.agg(
F.count("*").alias("amount"),
F.avg("amount").alias("avg_amount")
)
如何确定“金额”列?似乎是为每个客户随机选择的。预期输出中的金额列的规则是什么?例如,为什么组A
的3
?列金额中没有规则。它是事务行。取决于客户正在进行的交易数量。那么B不应该是2,C不应该是4吗?他们在输入表中分别有2个和4个事务。这是否回答了您的问题?