我在解决这个问题时遇到了问题。这是问题陈述 假设我有一个数据帧,我想为列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 |
+---+----+---+-----+
答案 0 :(得分:0)
您必须在C
列
3
列foo
,B
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)
你应该得到你想要的输出。