如何划分两个聚合总和数据框
Posted
技术标签:
【中文标题】如何划分两个聚合总和数据框【英文标题】:How to divide two aggreate sum dataframe 【发布时间】:2020-03-27 02:00:40 【问题描述】:我想将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'
提前致谢。
【问题讨论】:
【参考方案1】:您的方法是正确的,但您只能在聚合函数内进行计算。
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
【讨论】:
以上是关于如何划分两个聚合总和数据框的主要内容,如果未能解决你的问题,请参考以下文章