【问题标题】:PySpark string column to timestamp conversionPySpark 字符串列到时间戳的转换
【发布时间】:2021-11-17 20:25:51
【问题描述】:

我目前正在学习 pyspark,我需要将格式为 13/09/2021 20:45 的字符串 COLUMN 转换为 20:45 小时的时间戳。

现在我想我可以使用q1.withColumn("timestamp",to_timestamp("ts")) \ .show()(其中 q1 是我的数据框,ts 是我们正在谈论的列)来将我的输入转换为 DD/MM/YYYY HH:MM 格式,但是值返回的只是空值。因此,我意识到我需要 PySpark 时间戳格式 (MM-dd-yyyy HH:mm:ss.SSSS) 的输入来将其转换为正确的时间戳。因此现在我的问题是:

如何将字符串 dd/mm/yyyy hh:mm 列转换为 pyspark 可以理解的格式,以便将其转换为时间戳格式?

【问题讨论】:

    标签: date pyspark


    【解决方案1】:

    您可以通过多种方式做到这一点

    from pyspark.sql import functions as F
    
    # use substring
    df.withColumn('hour', F.substring('A', 12, 15)).show()
    
    # use regex
    df.withColumn('hour', F.regexp_extract('A', '\d{2}:\d{2}', 0)).show()
    
    # use datetime
    df.withColumn('hour', F.from_unixtime(F.unix_timestamp('A', 'dd/MM/yyyy HH:mm'), 'HH:mm')).show()
    
    # Output
    # +----------------+-----+
    # |               A| hour|
    # +----------------+-----+
    # |13/09/2021 20:45|20:45|
    # +----------------+-----+
    

    【讨论】:

      【解决方案2】:

      unix_timestamp 可能对您的问题有所帮助。

      试试这个: Convert pyspark string to date format

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2018-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 2021-07-24
      相关资源
      最近更新 更多