Объединить два столбца искрового фрейма данных с нулевыми значениями - PullRequest
0 голосов
/ 25 февраля 2020

В моем искровом фрейме данных есть два столбца

First_name  Last_name
Shiva       Kumar
Karthik     kumar
Shiva       Null
Null        Shiva

Мое требование - добавить новый столбец в фрейм данных, объединив два вышеупомянутых столбца с запятой и обработав также нулевые значения.

Я пытался использовать concat и coalesce, но я не могу получить вывод с запятой, только когда доступны оба столбца

Ожидаемый вывод

Full_name
Shiva,kumar
Karthik,kumar
Shiva
Shiva

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

concat_ws concats и обрабатывает null значения для вас.

df.withColumn('Full_Name', F.concat_ws(',', F.col('First_name'), F.col('Last_name'))
2 голосов
/ 25 февраля 2020

Вы можете использовать lit:

import pyspark.sql.functions as F

f = df.withColumn('Full_Name', F.concat(F.col('First_name'), F.lit(','), F.col('Last_name'))).select('Full_Name')

# fix null values
f = f.withColumn('Full_Name', F.regexp_replace(F.col('Full_Name'), '(,Null)|(Null,)', ''))

f.show()

+-------------+
|    Full_Name|
+-------------+
|  Shiva,Kumar|
|Karthik,kumar|
|        Shiva|
|        Shiva|
+-------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...