假设我有一个包含多列的数据框,我想迭代每一列,进行一些计算并更新该列。有什么好的方法可以做到这一点吗?
更新在下面的示例中,我有一个包含两个整数列 c1 和 c2 的数据框。每列的值除以其列的总和。
import org.apache.spark.sql.expressions.Window
val df = Seq((1,15), (2,20), (3,30)).toDF("c1","c2")
val result = df.columns.foldLeft(df)((acc, colname) => acc.withColumn(colname, sum(acc(colname)).over(Window.orderBy(lit(1)))/acc(colname)))
输出:
scala> result.show()
+---+------------------+
| c1| c2|
+---+------------------+
|6.0| 4.333333333333333|
|3.0| 3.25|
|2.0|2.1666666666666665|
+---+------------------+
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句