如何通过计算列的总和并除以常量来创建新列-pyspark

问题描述 投票:0回答:1

我必须通过连接其他两个数据帧来创建数据帧在新数据框中,我通过计算sum(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))\

Try2:

(df1.agg(sum('Col1')))/lit(100)

Try3:

(df1.agg(sum('Col1')).div(100))

显示错误:

尝试3:AttributeError:“ DataFrame”对象没有属性“ div”尝试1和2:TypeError:/不支持的操作数类型:“ DataFrame”和“ int”

apache-spark pyspark division pyspark-dataframes
1个回答
0
投票

您必须使用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")
)
© www.soinside.com 2019 - 2024. All rights reserved.