如何在Pyspark中实现groupby分组汇总统计?
PySpark 对等实现代码
和你提供的pandas逻辑完全一致的实现如下:
from pyspark.sql import functions as F # packet 为已读取到PySpark环境中的DataFrame对象 packetmonthly = packet.groupBy("year", "month", "customer_id") \ .agg( F.sum("amount").alias("packet_sum"), F.min("amount").alias("packet_min"), F.max("amount").alias("packet_max"), F.avg("amount").alias("packet_avg") )
逻辑说明
- PySpark原生的
groupBy+agg组合直接对应pandas的分组聚合逻辑,不需要像pandas一样通过apply构造Series生成聚合列,性能远高于自定义UDF实现 - 聚合完成后分组列
year、month、customer_id默认保留在结果中,不需要额外执行reset_index()操作 - 四个聚合函数的默认行为和pandas完全一致,会自动忽略
amount字段的空值
内容的提问来源于stack exchange,提问作者Nabih Bawazir
相关产品推荐
相关产品推荐

