Как округлить столбец datetime в фрейме данных pyspark до ближайшего квартала - PullRequest
1 голос
/ 17 января 2020

У меня есть столбец со значениями даты и времени. Пример: 17.01.2020 15:55:00. Я хочу округлить время до ближайшего квартала (17.01.2020 16:00:00). Примечание: пожалуйста, не отвечайте на этот вопрос, используя pandas я хочу ответить только с помощью pyspark.

Ответы [ 2 ]

1 голос
/ 18 января 2020

попробуйте это будет работать для вас.

from pyspark.sql.functions import current_timestamp
result = data.withColumn("hour",hour((round(unix_timestamp("date")/3600)*3600).cast("timestamp")))
0 голосов
/ 18 января 2020

Хотя в Spark у нас нет функции sql, которая напрямую усекает дату и время до четверти, мы можем построить столбец, используя несколько функций. Сначала создайте DataFrame

from pyspark.sql.functions import current_timestamp
dateDF = spark.range(10)\
.withColumn("today", current_timestamp())
dateDF.show(10, False)

Затем обрежьте минуты, относящиеся к следующему кварталу (поместив его в столбец минут)

from pyspark.sql.functions import minute, hour, col, round, date_trunc, unix_timestamp, to_timestamp
dateDF2 = dateDF.select(col("today"),
              (round(minute(col("today"))/15)*15).cast("int").alias("mins"))

Затем мы усекаем метку времени до thour measure, преобразуйте его в unix_timestamp, добавьте минуты для усечения и снова конвертируйте его в тип отметки времени

dateDF2.select(col("today"), to_timestamp(unix_timestamp(date_trunc("hour", col("today"))) + col("mins")*60).alias("truncated_timestamp")).show(10, False)

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...