如何通过计算列的总和并除以常数来创建新列 - pyspark
how to create a new column by calculating a sum of column and dividing by a constant - pyspark
我必须通过连接另外两个数据框来创建一个数据框
在新数据框中,我通过计算 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))\
尝试2:
(df1.agg(sum('Col1')))/lit(100)
尝试 3:
(df1.agg(sum('Col1')).div(100))
显示错误:
尝试 3:AttributeError:'DataFrame' 对象没有属性 'div'
尝试 1 和 2:
类型错误:/ 的操作数类型不受支持:'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")
)
我必须通过连接另外两个数据框来创建一个数据框
在新数据框中,我通过计算 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))\
尝试2:
(df1.agg(sum('Col1')))/lit(100)
尝试 3:
(df1.agg(sum('Col1')).div(100))
显示错误:
尝试 3:AttributeError:'DataFrame' 对象没有属性 'div' 尝试 1 和 2: 类型错误:/ 的操作数类型不受支持:'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")
)