Spark Dataframe не добавляет столбцы с нулевыми значениями - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь создать новый столбец, добавив два существующих столбца в моем фрейме данных.

Исходный фрейм данных

╔══════╦══════╗
║ 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    ║
╚══════╩══════╩══════╝

Есть ли способ включить нулевые значения в расчет.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Вы можете объединить в 0, чтобы получить сумму.Для случаев, когда оба столбца являются нулевыми, вы можете использовать условные функции.

Для вашего случая код должен выглядеть примерно так:

df.selectExpr('*', 'if(isnull(cola) and isnull(colb), null, coalesce(cola, 0) + coalesce(colb, 0)) as colc')
0 голосов
/ 18 октября 2018

Замените null на 0, используя функцию coalesce, а затем добавьте два столбца вместе;С selectExpr и синтаксисом sql:

df.selectExpr('*', 'coalesce(cola, 0) + coalesce(colb, 0) as colc')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...