【问题标题】:Using Pyspark to convert column from string to timestamp使用 Pyspark 将列从字符串转换为时间戳
【发布时间】:2019-11-07 14:07:07
【问题描述】:

我有 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()

【问题讨论】:

    标签: pyspark apache-spark-sql pyspark-sql pyspark-dataframes


    【解决方案1】:

    你可以使用下面的

    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
    )
    

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 2021-06-28
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多