使用Pyspark将列从字符串转换为时间戳

我有2列(Violation_Time,Time_First_Observed)的pyspark数据帧,它们被捕获为字符串。数据样本在下面,以HHmm的形式捕获,其中“ A”或“ P”代表上午或下午。另外,某些条目超过24HH时,数据有错误。

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

我想使用pyspark删除两列的“ A”和“ P”,然后将数据(例如0800、1930等)转换为时间戳以进行分析。我尝试对“ Violation_Time”列执行此操作,并创建一个新列“ timestamp”来存储它(请参见下面的代码)。但是,我似乎无法做到。任何形式的帮助都非常感谢,谢谢。

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

ili21477 回答:使用Pyspark将列从字符串转换为时间戳

您可以使用以下

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
)
本文链接:https://www.f2er.com/3147263.html

大家都在问