PySpark преобразовать столбец String в тип Datetime

#datetime #pyspark

#datetime #pyspark

Вопрос:

У меня есть данные метки времени, такие как:

 [29:23:59:45]
  

Это означает любой месяц 29, 23:59:45

Как я могу преобразовать в PySpark, например, ДЕНЬ 29, ВРЕМЯ: 23:59:45?

Возможно, используя что-то вроде

 from datetime import datetime

dVal = datetime.strptime('[29:23:59:45]', '%d/%h/%m/%s')
  

Ответ №1:

Это классический пример, для которого необходимо использовать определяемую пользователем функцию (UDF).

 from datetime import datetime
from spark.sql import functions as F

def toDate(x):
   return datetime.strptime(x, '%m %H:%M:%S')

toDate = F.udf(toDate)
new_df = df.withColumn('date', toDate(F.col('timestamp'))
  

где df должен быть старым фреймом данных, содержащим столбец с именем ‘timestamp’, как вы сообщили.