【问题标题】:Create timestamp from Date and Hour columns - Pyspark3从日期和小时列创建时间戳 - Pyspark3
【发布时间】:2020-05-11 21:30:58
【问题描述】:

我有一个 pyspark 数据框,其中包含我想从中创建时间戳的两列。

+----------+------------+
|start_date|daypart_hour|
+----------+------------+
|2019-09-17|          22|
|2019-09-17|          11|
|2019-09-17|           9|
+----------+------------+

daypart_hour 是从午夜到午夜的刻度,范围为 0-23。 0 与午夜关联,23 与晚上 11 点关联。

我很好奇如何制作这个......或者类似的东西。

+----------+------------+---------------------+
|start_date|daypart_hour|          start_dt_ts|
+----------+------------+---------------------+
|2019-09-17|          22|2019-09-17 10:00:00pm|
|2019-09-17|          11|2019-09-17 11:00:00am|
|2019-09-17|           9|2019-09-17 09:00:00am|
+----------+------------+---------------------+

每个日期总是有 0-23 小时。没有缺失值。

【问题讨论】:

    标签: python apache-spark pyspark etl amazon-emr


    【解决方案1】:

    您可以使用 date_formatto_timestampconcat 来获得所需的结果。有关日期时间字符的更多信息,请参阅 Java Simple Date format

    from pyspark.sql import functions as F
    
    df.withColumn("start_dt_ts", \
                  F.date_format(F.to_timestamp(F.concat("start_date","daypart_hour"),"yyyy-MM-ddHH"),\
                                              "yyyy-MM-dd hh:ss:SSa")).show(truncate=False)
    
    #+----------+------------+---------------------+
    #|start_date|daypart_hour|start_dt_ts          |
    #+----------+------------+---------------------+
    #|2019-09-17|22          |2019-09-17 10:00:00PM|
    #|2019-09-17|11          |2019-09-17 11:00:00AM|
    #|2019-09-17|9           |2019-09-17 09:00:00AM|
    #+----------+------------+---------------------+
    

    【讨论】:

    • 这个解决方案对我不起作用
    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 2021-03-11
    • 2014-11-26
    • 2022-12-10
    • 2018-12-14
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多