Spark数据框插入值(如果不存在)

问题描述 投票:0回答:1

假设我有这样的数据帧:

enter image description here

但有时缺少一些行我需要确定缺少哪些行然后插入这样的行。所有的值都知道什么是在Spark中做到这一点的最佳方法(更喜欢在python中)

apache-spark dataframe apache-spark-sql
1个回答
1
投票

如果我理解正确,那么“缺失”值将由跳过的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|
+---+-----+------+------+
© www.soinside.com 2019 - 2024. All rights reserved.