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

标签 python apache-spark pyspark

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

原始数据框

╔══════╦══════╗
║ 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/

相关文章:

Python:如何在另一个数据框中查找值?

apache-spark - 如何使用 PySpark 保存 IDFmodel

apache-spark - 从 json 模式表示创建 spark 数据帧模式

hadoop - 来自 SequenceFile 的 Spark DataFrame

python - Spark 读取二进制文件的子组

python - 解析Python Cmd模块中的参数

python - Quiver 图箭头纵横比

scala - Spark 多个数据帧保存

pyspark - 列(标题)子字符串在 pyspark 中替换

python - 使用 Selenium Webdriver 单击下拉元素菜单