【发布时间】:2018-06-18 20:33:57
【问题描述】:
我正在尝试向DataFrame 添加一个新列。此列的值是另一个列的值,该列的名称依赖于同一 DataFrame 中的其他列。
例如,鉴于此:
+---+---+----+----+
| A| B| A_1| B_2|
+---+---+----+----+
| A| 1| 0.1| 0.3|
| B| 2| 0.2| 0.4|
+---+---+----+----+
我想得到这个:
+---+---+----+----+----+
| A| B| A_1| B_2| C|
+---+---+----+----+----+
| A| 1| 0.1| 0.3| 0.1|
| B| 2| 0.2| 0.4| 0.4|
+---+---+----+----+----+
也就是说,我添加了 C 列,其值来自 A_1 列或 B_2 列。源列 A_1 的名称来自连接列 A 和 B 的值。
我知道我可以添加一个基于另一个的新列和一个像这样的常量:
df.withColumn("C", $"B" + 1)
我也知道列名可以来自这样的变量:
val name = "A_1"
df.withColumn("C", col(name) + 1)
但是,我想做的是这样的:
df.withColumn("C", col(s"${col("A")}_${col("B")}"))
这不起作用。
注意:我正在使用 Scala 2.11 和 Spark 2.2 进行编码。
【问题讨论】:
标签: scala apache-spark apache-spark-sql