首页 > 解决方案 > 如何划分两个聚合数据框

问题描述

我想将pyspark中两列的总和相除,例如,我在下面有一个数据集

    A  B  C
 1  1  2  3
 2  1  2  3
 3  1  2  3

我想要的是得到 colA 的总和除以 colB 的总和,如下所示

  6 (Sum of colB)  / 3 (Sum of colA) = 2

我尝试的是

sumofA = df.groupby().sum('A') 
sumofB = df.groupby().sum('B')

Result = B / A

但产生错误:

TypeError: unsupported operand type(s) for /: 'DataFrame' and 'DataFrame'

感谢先进。

标签: python-3.xpyspark

解决方案


您的方法是正确的,但您只能在聚合函数内进行计算。

from pyspark.sql import functions as F
df.groupBy().agg(F.sum("B")/F.sum("A")).show()
+-----------------+
|(sum(B) / sum(A))|
+-----------------+
|              2.0|
+-----------------+

或者,您可以使用collect()[0][0]

from pyspark.sql import functions as F
a=df.groupBy().agg(F.sum("B")/F.sum("A")).collect()[0][0]
a

Out[5]: 2.0

推荐阅读