我有一個包含數百個特征列的 DataFrame,如下所示:
Country | ID | Feature_1 | Feature_2 | Feature_3 |....
US 123 1 5 0
US 456 0 10 1
CA 789 0 6 1
CA 999 0 3 0
...
我想按國家/地區執行分組,然后對每個功能求和,所以我最終應該得到這樣的結果:
Country | Feature_1 | Feature_2 | Feature_3 | ....
US 1 15 1
CA 0 9 1
如何有效地計算所有數百個特征的聚合求和函式?我知道一個功能,它是這樣的:
df.groupBy("Country").sum("Feature_1)
uj5u.com熱心網友回復:
你可以試試
import org.apache.spark.sql.functions._
val df = Seq(
("a", 9, 1),
("a", 4, 2),
("b", 1, 3),
("a", 1, 4),
("b", 2, 5)
).toDF("name", "x", "y")
df.groupBy(col("name"))
.agg(
sum(col("x")).as("xsum"),
sum(col("y")).as("ysum")
)
.show(false)
如果你想讓它動態:
var exprs:List[Column] = List()
for(col <- List[String]("x", "y")){
exprs : = expr(s"sum($col) as sum_$col")
}
df.groupBy(col("name"))
.agg(
exprs.head, exprs.tail:_*
)
.show(false)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/432897.html
