使用 Pyspark 将列从字符串转换为时间戳
Using Pyspark to convert column from string to timestamp
我有一个包含 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()
您可以使用以下
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
)
我有一个包含 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()
您可以使用以下
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
)