spark withcolumn创建一个从existsine列复制值的列

时间:2018-02-24 03:11:40

标签: scala apache-spark dataframe apache-spark-sql

我在解决这个问题时遇到了问题。这是问题陈述  假设我有一个数据帧,我想为列c选择值,其中列b值为foo并创建一个新列D并重复该值#34; 3"对于所有行

+---+----+---+
|  A|   B|  C|
+---+----+---+
|  4|blah|  2|
|  2|    |  3|
| 56| foo|  3|
|100|null|  5|
+---+----+---+

want it to become:
+---+----+---+-----+
|  A|   B|  C|  D  |
+---+----+---+-----+
|  4|blah|  2|  3  |
|  2|    |  3|  3  |
| 56| foo|  3|  3  |
|100|null|  5|  3  |
+---+----+---+-----+

1 个答案:

答案 0 :(得分:0)

您必须在C

中提取3fooB
import org.apache.spark.sql.functions._
val value = df.filter(col("B") === "foo").select("C").first()(0)

然后使用withColumn使用该值,使用D函数

创建新列lit
df.withColumn("D", lit(value)).show(false)

你应该得到你想要的输出。