python - Pyspark 数据框 : Summing over a column while grouping over another

标签 python pyspark apache-spark-sql apache-spark-1.3

我有一个如下所示的数据框

In [94]: prova_df.show()


order_item_order_id order_item_subtotal
1                   299.98             
2                   199.99             
2                   250.0              
2                   129.99             
4                   49.98              
4                   299.95             
4                   150.0              
4                   199.92             
5                   299.98             
5                   299.95             
5                   99.96              
5                   299.98             

我想做的是为第一列的每个不同值计算第二列相应值的总和。 我尝试使用以下代码执行此操作:

from pyspark.sql import functions as func
prova_df.groupBy("order_item_order_id").agg(func.sum("order_item_subtotal")).show()

给出输出

SUM('order_item_subtotal)
129.99000549316406       
579.9500122070312        
199.9499969482422        
634.819995880127         
434.91000747680664 

我不太确定这样做是否正确。 为什么它不显示第一列中的信息? 预先感谢您的回答

最佳答案

Why isn't it showing also the information from the first column?

很可能是因为您使用的是过时的 Spark 1.3.x。如果是这种情况,您必须重复 agg 中的列分组,如下所示:

(df
    .groupBy("order_item_order_id")
    .agg(func.col("order_item_order_id"), func.sum("order_item_subtotal"))
    .show())

关于python - Pyspark 数据框 : Summing over a column while grouping over another,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961899/

相关文章:

python - 从列表中的列表打印网格值

python - 使用 Python Spark 从 Hadoop 表的 Json 对象中提取所有键

python - 如何迭代 pyspark.sql.Column?

python - Pyspark RDD : convert to string

scala - 在 Spark 中读取 Avro 文件

python libsvm 核心转储

Python脚本突然无法编译并显示 "expected an indent block"

python - 将可调用对象隐式绑定(bind)到实例

scala - 如何在 IntelliJ IDEA 中创建 Spark/Scala 项目(无法解析 build.sbt 中的依赖项)?

apache-spark - Spark DataFrame 通过键将列值聚合到 List 中