【问题标题】: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'

提前致谢。

【问题讨论】:

    标签: python-3.x pyspark


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 2012-05-04
      • 2016-08-15
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      相关资源
      最近更新 更多