我正在尝试通过在我的数据框中添加两个现有列来创建一个新列。
原始数据框
╔══════╦══════╗
║ cola ║ colb ║
╠══════╬══════╣
║ 1 ║ 1 ║
║ null ║ 3 ║
║ 2 ║ null ║
║ 4 ║ 2 ║
╚══════╩══════╝
派生列的预期输出
╔══════╦══════╦══════╗
║ cola ║ colb ║ colc ║
╠══════╬══════╬══════╣
║ 1 ║ 1 ║ 2 ║
║ null ║ 3 ║ 3 ║
║ 2 ║ null ║ 2 ║
║ 4 ║ 2 ║ 6 ║
╚══════╩══════╩══════╝
当我使用 df = df.withColumn('colc',df.cola+df.colb) 时,它不会添加具有空值的列。
我得到的输出是:
╔══════╦══════╦══════╗
║ cola ║ colb ║ colc ║
╠══════╬══════╬══════╣
║ 1 ║ 1 ║ 2 ║
║ null ║ 3 ║ null ║
║ 2 ║ null ║ null ║
║ 4 ║ 2 ║ 6 ║
╚══════╩══════╩══════╝
有什么方法可以将空值合并到计算中。任何帮助,将不胜感激。
最佳答案
您可以 合并 到 0 以获得总和。
对于两列都为空的情况,您可以使用条件函数。
对于您的情况,代码应该类似于
df.selectExpr('*', 'if(isnull(cola) and isnull(colb), null, coalesce(cola, 0) + coalesce(colb, 0)) as colc')
关于python - Spark 数据框不添加具有空值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52865788/