gpt4 book ai didi

scala - 如何在Spark数据帧中执行条件 "withColumn"?

转载 作者:行者123 更新时间:2023-12-03 15:44:58 26 4
gpt4 key购买 nike

我有一个数据框(mydf),如下所示:

+---+---+---+---+
| F1| F2| F3| F4|
+---+---+---+---+
| t| y4| 5|1.0|
| x| y| 1|0.5|
| x| y| 1|0.5|
| x| z| 2|1.0|
| x| b| 5|1.0|
| t| y2| 6|1.0|
| t| y3| 3|1.0|
| x| a| 4|1.0|
+---+---+---+---+

我想在“ withColumn”内进行条件聚合,如下所示:
mydf.withColumn("myVar", if($"F3" > 3) sum($"F4") else 0.0)

也就是说,对于具有 $F3 <= 0的每一行, myVar的值应为0.0,其他值应为 $"F4"的总和。

如何在Spark Scala中实现它?

最佳答案

您可以使用when函数来使用条件句

import org.apache.spark.sql.functions.when
mydf.withColumn("myVar", when($"F3" > 3, $"F4").otherwise(0.0))

但是我不知道你想累加什么,因为每行只有一个F4值

编辑
如果要首先聚合,可以执行 groupBy和和 agg,如下所示:
mydf.groupBy("F1", "F2")
.agg(sum("F3").as("F3"), sum("F4").as("F4"))

然后像以前一样添加withColumn句子。

放在一起
:
   mydf.groupBy("F1", "F2")
.agg(sum("F3").as("F3"), sum("F4").as("F4"))
.withColumn("myVar", when($"F3" > 3, $"F4").otherwise(0.0))

关于scala - 如何在Spark数据帧中执行条件 "withColumn"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53191271/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com