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)
有什么方法可以将空值合并到计算中。任何帮助,将不胜感激。
您可以合并为 0 以获得总和。对于两列都为空的情况,您可以使用条件函数。
对于您的情况,代码应该类似于
df.selectExpr('*', 'if(isnull(cola) and isnull(colb), null, coalesce(cola, 0) + coalesce(colb, 0)) as colc')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4941 次 |
| 最近记录: |