如果我理解正确,那么“缺失”值将由跳过的foo
表示。在这种情况下,您正在寻找的是外连接。
假设您有两个数据帧。你原来的,称之为df
:
+---+-----+
|foo|value|
+---+-----+
| a| 1|
| b| 2|
+---+-----+
有你已知价值的那个,称之为defaults
:
+---+------+
|foo|value2|
+---+------+
| c| 3|
| b| 3|
+---+------+
外连接为您提供以下内容:
>>> jd = df.join(defaults, on="foo", how='outer')
>>> jd.show()
+---+-----+------+
|foo|value|value2|
+---+-----+------+
| c| null| 3|
| b| 2| 3|
| a| 1| null|
+---+-----+------+
我们现在只需要合并两个值列,如果定义了value
,首先将它们放在一起:
>>> jd = jd.withColumn("result", coalesce("value", "value2"))
>>> jd.show()
+---+-----+------+------+
|foo|value|value2|result|
+---+-----+------+------+
| c| null| 3| 3|
| b| 2| 3| 2|
| a| 1| null| 1|
+---+-----+------+------+