Использование Pyspark для преобразования столбца из строки в метку времени - PullRequest
2 голосов
/ 07 ноября 2019

У меня есть фрейм данных pyspark с 2 столбцами (Violation_Time, Time_First_Observed), которые записываются в виде строк. Ниже приведен пример данных, где они представлены как ЧЧмм, где «А» или «Р» представляют собой am или pm. Кроме того, данные имеют ошибку, когда некоторые записи превышают 24HH.

Violation_Time          Time_First_Observed
0830A                   1600P
1450P                   0720A
1630P                   2540P
0900A                   0100A

Я хотел бы использовать pyspark, чтобы удалить буквы «A» и «P» для обоих столбцов, а затем преобразовать данные (например, 0800, 1930 и т. Д.) В метку времени для целей анализа. Я попытался сделать это для столбца «Violation_Time» и создать новый столбец «отметка времени» для хранения этого (см. Код ниже). Тем не менее, я не могу сделать это. Спасибо за любую помощь, спасибо.

sparkdf3.withColumn('timestamp',F.to_timestamp("Violation_Time", "HH"))
sparkdf3.select(['Violation_Time','timestamp']).show()

1 Ответ

2 голосов
/ 07 ноября 2019

Вы можете использовать следующее

sparkdf3 = sparkdf3.withColumn('timestamp', func.split(func.to_timestamp('Violation_Time', 'HHmm'), ' ').getItem(1))
sparkdf3.select(['Violation_Time','timestamp']).show()

Объяснение

sparkdf3.withColumn('timestamp', 
   func.split(
      func.to_timestamp('Violation_Time', 'HHmm') #Convert to timestamp. It will convert in datetime format
       , ' '
    ).getItem(1) #Split on space and get first item
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...