Получение среднего значения даты из фрейма данных pyspark

#apache-spark #pyspark #apache-spark-sql

#apache-spark #pyspark #apache-spark-sql

Вопрос:

У меня есть df с данными о продукте со следующей схемой

 root
 |-- Creator: string (nullable = true)
 |-- Created_datetime: timestamp (nullable = true)
 |-- Last_modified_datetime: timestamp (nullable = true)
 |-- Product_name: string (nullable = true)
  

столбцы Created_datetime выглядят следующим образом

  ------------------- 
|   Created_datetime|
 ------------------- 
|2019-10-12 17:09:18|
|2019-12-03 07:02:07|
|2020-01-16 23:10:08|
  

Теперь я хотел бы извлечь среднее значение (или ближайшее значение к среднему существующему) в Created_datetime столбце. Как этого можно достичь?

Ответ №1:

Когда вы вычисляете среднее значение timestamp столбца, оно дает вам среднее unix timestamp (long) значение. Приведите его обратно к timestamp :

 from pyspark.sql.functions import *
from pyspark.sql import functions as F

df.agg(F.avg("Created_datetime").cast("timestamp").alias("avg_created_datetime")).show()
 --------------------                                                           
|avg_created_datetime|
 -------------------- 
| 2019-11-30 23:27:11|
 --------------------