2 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以通過 sum 函數(shù)實(shí)現(xiàn)此目的
import pyspark.sql.functions as f
df.select(*[f.sum(cols).alias(cols) for cols in df.columns]).show()
+----+---+---+
|val1| x| y|
+----+---+---+
| 36| 29|159|
+----+---+---+

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
要將所有列匯總為一個(gè)新列,您可以將列表推導(dǎo)與 python 的 sum 函數(shù)一起使用
import pyspark.sql.functions as F
from pyspark.sql.functions import udf
from pyspark.sql.types import *
tst= sqlContext.createDataFrame([(10,7,14),(5,1,4),(9,8,10),(2,6,90),(7,2,30),(3,5,11)],schema=['val1','x','y'])
tst_sum= tst.withColumn("sum_col",sum([tst[coln] for coln in tst.columns]))
結(jié)果:
tst_sum.show()
+----+---+---+-------+
|val1| x| y|sum_col|
+----+---+---+-------+
| 10| 7| 14| 31|
| 5| 1| 4| 10|
| 9| 8| 10| 27|
| 2| 6| 90| 98|
| 7| 2| 30| 39|
| 3| 5| 11| 19|
+----+---+---+-------+
注意:如果您從 pyspark 函數(shù)中導(dǎo)入了 sum 函數(shù),那么from import pyspark.sql.functions import sum您必須將名稱更改為其他名稱,例如from import pyspark.sql.functions import sum_pyspark
添加回答
舉報(bào)