Spark 数据框不添加具有空值的列

Mr.*_*r.P 4 python apache-spark pyspark

我正在尝试通过在我的数据框中添加两个现有列来创建一个新列。

原始数据框

???????????????
? cola ? colb ?
???????????????
? 1    ? 1    ?
? null ? 3    ?
? 2    ? null ?
? 4    ? 2    ?
???????????????
Run Code Online (Sandbox Code Playgroud)

派生列的预期输出

??????????????????????
? cola ? colb ? colc ?
??????????????????????
? 1    ? 1    ?    2 ?
? null ? 3    ?    3 ?
? 2    ? null ?    2 ?
? 4    ? 2    ?    6 ?
??????????????????????
Run Code Online (Sandbox Code Playgroud)

当我使用 df = df.withColumn('colc',df.cola+df.colb) 时,它不会添加具有空值的列。

我得到的输出是:

??????????????????????
? cola ? colb ? colc ?
??????????????????????
? 1    ? 1    ? 2    ?
? null ? 3    ? null ?
? 2    ? null ? null ?
? 4    ? 2    ? 6    ?
??????????????????????
Run Code Online (Sandbox Code Playgroud)

有什么方法可以将空值合并到计算中。任何帮助,将不胜感激。

Con*_*ine 6

您可以合并为 0 以获得总和。对于两列都为空的情况,您可以使用条件函数。

对于您的情况,代码应该类似于

df.selectExpr('*', 'if(isnull(cola) and isnull(colb), null, coalesce(cola, 0) + coalesce(colb, 0)) as colc')
Run Code Online (Sandbox Code Playgroud)