Hinzufügen einer Spalte rowsums über eine Liste von Spalten in Spark-Dataframe

Ich habe eine Spark-dataframe mit mehreren Spalten. Ich möchte eine Spalte hinzufügen, die auf der dataframe, die eine Summe einer bestimmten Anzahl von Spalten.

Beispielsweise meine Daten sieht wie folgt aus:

ID var1 var2 var3 var4 var5
a   5     7    9    12   13
b   6     4    3    20   17
c   4     9    4    6    9
d   1     2    6    8    1

Möchte ich eine Spalte Hinzugefügt, die Summe der Zeilen für bestimmte Spalten:

ID var1 var2 var3 var4 var5   sums
a   5     7    9    12   13    46
b   6     4    3    20   17    50
c   4     9    4    6    9     32
d   1     2    6    8    10    27

Ich weiß, es ist möglich, fügen Sie Spalten zusammen, wenn man das spezifische Spalten hinzufügen:

val newdf = df.withColumn("sumofcolumns", df("var1") + df("var2"))

Ist es jedoch möglich, übergeben eine Liste von Spaltennamen und fügen Sie Sie zusammen? Basierend auf dieser Antwort, die im Grunde, was ich will, aber es ist mit Hilfe der python-API von scala (Fügen Sie eine Spalte Summe als neue Spalte in PySpark dataframe) ich denke, dass so etwas funktionieren würde:

//Select columns to sum
val columnstosum = ("var1", "var2","var3","var4","var5")

//Create new column called sumofcolumns which is sum of all columns listed in columnstosum
val newdf = df.withColumn("sumofcolumns", df.select(columstosum.head, columnstosum.tail: _*).sum)

Löst dies den Fehler mit dem Wert der Summe der nicht Mitglied der org.apache.spark.sql.DataFrame. Gibt es eine Möglichkeit, um die Summe über mehrere Spalten?

Vielen Dank im Voraus für Ihre Hilfe.

InformationsquelleAutor Sarah | 2016-06-03
Schreibe einen Kommentar