gpt4 book ai didi

Scala 通过表达式向数据框添加新列

转载 作者:行者123 更新时间:2023-12-02 09:37:16 25 4
gpt4 key购买 nike

我将使用表达式向数据框添加新列。例如,我有一个数据框

+-----+----------+----------+-----+
| C1 | C2 | C3 |C4 |
+-----+----------+----------+-----+
|steak|1 |1 | 150|
|steak|2 |2 | 180|
| fish|3 |3 | 100|
+-----+----------+----------+-----+

我想用表达式“C2/C3+C4”创建一个新列C5,假设需要添加几个新列,并且表达式可能不同并且来自数据库。

有什么好的方法吗?

我知道如果我有一个像“2+3*4”这样的表达式,我可以使用 scala.tools.reflect.ToolBox 来评估它。

通常我使用 df.withColumn 来添加新列。

似乎我需要创建一个 UDF,但是如何将列值作为参数传递给 UDF?特别是可能有多个表达式需要不同的列计算。

最佳答案

这可以使用 expr 从表达式创建 Column 来完成:

val df = Seq((1,2)).toDF("x","y")

val myExpression = "x+y"

import org.apache.spark.sql.functions.expr

df.withColumn("z",expr(myExpression)).show()

+---+---+---+
| x| y| z|
+---+---+---+
| 1| 2| 3|
+---+---+---+

关于Scala 通过表达式向数据框添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46087420/

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