apache-spark - 如何通过计算列的总和并除以常数来创建新列 - pyspark
问题描述
我必须通过加入其他两个数据框来创建一个数据框在新的数据框中,我通过计算 asum(Col1)
并除以我在代码下面尝试的数字来创建一个新列,它们都不起作用。
我们如何在 pyspark 中处理将一列除以一个常量
尝试1:
df = df2.join(df1,cond,'inner).df1.groupby('category').withColumn('Amt',
(sum(df1('Col1'))/ 100))\
.withColumn('Amt1',(sum(df1(Col2))/ 100))\
.withColumn('Amt2',(sum(df1(Col3))/ 100))\
尝试2:
(df1.agg(sum('Col1')))/lit(100)
尝试3:
(df1.agg(sum('Col1')).div(100))
显示错误:
尝试 3:AttributeError:'DataFrame' 对象没有属性 'div' 尝试 1 和 2:TypeError:不支持的操作数类型 /:'DataFrame' 和 'int'
解决方案
你必须使用agg
. 要给出正确的列名,您可以使用alias
:
df = df2.join(df1,cond,'inner').df1.groupby('category').agg(
(sum(df1('Col1'))/ 100).alias("Amt"),
(sum(df1('Col2'))/ 100).alias("Amt1"),
(sum(df1("Col3"))/ 100).alias("Amt2")
)
推荐阅读
- python - python中的线性回归严重错误,回归线完全错误
- php - 将中缀表达式转换为弹性搜索查询
- sql - SQL Server:如何按值分组,多列n天
- git - 从 BAT 文件运行 .exe 文件并等待执行,然后再运行下一组命令
- ios - 我添加到 iOS 应用程序的自定义字体是否可用于设备上的其他应用程序?
- osb - 如何按原样发送特殊字符数据:XQUERY 或 OSB 中的 MAU`A`
- html - 我想使用 DOM 但现在我有错误
- c# - Application.streamingAssetsPath 和 Application.persistentDataPath 有什么区别?它们是如何使用的?
- firebase - 将 Firebase 数据设置为 html 文件中的属性
- jupyter-notebook - 使用 jupyter notebook 时出现 ipykernel 错误