我有两个Dataframe。我想做的就是:
如果列名是“p”,那么我必须选择名为finalvalue的df2列,其中列id\u 1与df2的列id\u名称匹配,否则我必须用null填充它。
例如,我有以下Dataframe(df1和df2):
+--------+-------+-------+
|Name | value | id_1 |
+- ------+-------+-------+
|P |5 | being |
|X |1 | dose |
|Z |1 | yex |
df2
+--------+------------+
|Id_name | FinalValue |
+- ------+------------+
|ash | h32 |
|being | c11 |
|dose | g21 |
在这种情况下,输出应为:
+--------+-------+-------------+
|Name | value | FinalValue |
+- ------+-------+-------------+
|P |5 | c11 |
|X |1 | null |
|Z |1 | null |
我尝试的是:
var df3 = df1.withColumn("FinalValue", when($"Name" === "P", df2.select(...)))
但正如您所看到的,我不知道如何继续,因为如果我选择df2的一列,我就不能选择df1的另一列。我该怎么做?
也许我的解释不够好,如果你需要更多的信息或解释,就告诉我。提前谢谢。
1条答案
按热度按时间f2uvfpb91#
可以执行左连接,然后使用
when
: