Вы можете исправить это, используя функцию coalesce
. например, давайте создадим некоторые примеры данных
from pyspark.sql.functions import coalesce,lit
cDf = spark.createDataFrame([(None, None), (1, None), (None, 2)], ("a", "b"))
cDf.show()
+----+----+
| a| b|
+----+----+
|null|null|
| 1|null|
|null| 2|
+----+----+
Когда я делаю простую сумму, как вы -
cDf.withColumn('Total',cDf.a+cDf.b).show()
Я получаю сумму как ноль, так же, как вы описали-
+----+----+-----+
| a| b|Total|
+----+----+-----+
|null|null| null|
| 1|null| null|
|null| 2| null|
+----+----+-----+
чтобы исправить, используйте coalesce вместе с подсвеченной функцией, которая заменяет нулевые значения нулями.
cDf.withColumn('Total',coalesce(cDf.a,lit(0)) +coalesce(cDf.b,lit(0))).show()
это дает мне правильные результаты-
| a| b|Total|
+----+----+-----+
|null|null| 0|
| 1|null| 1|
|null| 2| 2|
+----+----+-----+