2016-10-21 1 views
1

Каков наиболее эффективный способ слияния двух столбцов в искровом фрейме?Самый эффективный способ слияния столбца временной метки в искровом информационном кадре

У меня есть две колонки, которые означают то же самое. Нулевые значения из timestamp должны быть заполнены значениями из toAppendData_timestamp

Когда оба столбца имеет значение, это означает, что значения равны ...

У меня есть это:

+--------------------+----------------------+--------+ 
|   timestamp|toAppendData_timestamp| value| 
+--------------------+----------------------+--------+ 
|2016-03-24 22:11:...|     null| null| 
|    null| 2016-03-24 22:12:...|0.015625| 
|    null| 2016-03-19 15:54:...| 5.375| 
|2016-03-19 15:55:...| 2016-03-19 15:55:...| 5.78125| 
|2016-03-19 15:56:...|     null| null| 
|2016-03-24 22:11:...| 2016-03-24 22:11:...| 0.15625| 
+--------------------+----------------------+--------+ 

И мне нужно это:

+--------------------+----------------------+--------+ 
| timestamp_merged|toAppendData_timestamp| value| 
+--------------------+----------------------+--------+ 
|2016-03-24 22:11:...|     null| null| 
|2016-03-24 22:12:...| 2016-03-24 22:12:...|0.015625| 
|2016-03-19 15:54:...| 2016-03-19 15:54:...| 5.375| 
|2016-03-19 15:55:...| 2016-03-19 15:55:...| 5.78125| 
|2016-03-19 15:56:...|     null| null| 
|2016-03-24 22:11:...| 2016-03-24 22:11:...| 0.15625| 
+--------------------+----------------------+--------+ 

Я попытался это, но без успеха:

appendedData = appendedData['timestamp'].fillna(appendedData['toAppendData_timestamp']) 

ответ

1

Функции, которые вы ищите, являются coalesce. Вы можете импортировать его из pyspark.sql.functions:

from pyspark.sql.functions import coalesce, col 

и использовать:

appendedData.withColumn(
    'timestamp_merged', 
    coalesce(col('timestamp'), col('toAppendData_timestamp')) 
) 
Смежные вопросы