python-3.x - 如何划分两个聚合数据框
问题描述
我想将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'
感谢先进。
解决方案
您的方法是正确的,但您只能在聚合函数内进行计算。
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
推荐阅读
- git - GIT 显示文件在 bitbucket 上移动 - 我希望它作为拉取请求的新文件
- mysql - drop table cascade 不会删除该表的所有引用
- r - 从 Rmarkdown 编织 PDF,每页一张图像,垂直居中
- node.js - 从 Lambda 调用外部 api 端点时出现 ENOTFOUND 错误
- javascript - 反应如何处理访问对象深处的变量,如果它并不总是存在
- r - 根据条件在数据集中创建新行
- java - 如何使用方法正确地将随机值放入数组中
- list - 无法在 Spring Boot 中合并来自两个 yaml 的列表
- amazon-web-services - 我们可以从 api 网关生成自动文档吗
- html - 无法在页面中心创建一行