Spark Scala Dataframe如何使用两个或更多现有列创建新列
假设我有一个Spark Scala数据帧对象,如:Spark Scala Dataframe如何使用两个或更多现有列创建新列,scala,apache-spark,Scala,Apache Spark,假设我有一个Spark Scala数据帧对象,如: +----------------+ |col1 | col2| +----------------+ |1 |2 | |3 |4 | +----------------+ 我想要一个数据帧,如: +--------------------+ |col1 | col2 | col3| +--------------------+ |1 |2 |3 | |3 |4
+----------------+
|col1 | col2|
+----------------+
|1 |2 |
|3 |4 |
+----------------+
我想要一个数据帧,如:
+--------------------+
|col1 | col2 | col3|
+--------------------+
|1 |2 |3 |
|3 |4 |7 |
+--------------------+
这将
col1
和col2
添加到col3
,谁能告诉我怎么做WithColumn
只取一列作为参数,而我需要取两列。您可以使用WithColumn
或选择作为参数
val df = Seq(
(1,2),
(3,4)
).toDF("col1", "col2")
df.withColumn("col3", $"col1" + $"col2").show(false)
df.select($"col1", $"col2", ($"col1" + $"col2").as("col3")).show(false)
输出:
+----+----+----+
|col1|col2|col3|
+----+----+----+
|1 |2 |3 |
|3 |4 |7 |
+----+----+----+
WithColumn接受两个参数,一个是名称,一个是应生成类型列的函数-因此结果为列的函数或表达式是有效的,因此您可以执行以下操作(或类似操作)
考虑<>代码>列是懒惰的,在运行时将被优化,我确信您可以在两列中调用它两次,没有任何问题。
df.withColumn("col3", df("col1")+df("col2"))