【问题标题】:PySpark: String to timestamp transformationPySpark:字符串到时间戳的转换
【发布时间】:2019-03-07 02:46:06
【问题描述】:

我正在处理时间数据并尝试将字符串转换为时间戳格式。

这是“时间”列的样子

+----------+
|  Time    |
+----------+
|1358380800|
|1380672000|
+----------+

这就是我想要的

+---------------+
|  Time         |
+---------------+
|2013/1/17 8:0:0|
|2013/10/2 8:0:0|
+---------------+

我找到了一些类似的问题和答案,并尝试了这些代码,但都以'null'结尾

df2 = df.withColumn("Time", test["Time"].cast(TimestampType()))

df2 = df.withColumn('Time', F.unix_timestamp('Time', 'yyyy-MM-dd').cast(TimestampType()))

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    嗯,你正在做相反的事情。 sql 函数unix_timestamp 将具有给定格式的字符串转换为unix 时间戳。当你想将一个unix时间戳转换为日期时间格式时,你必须使用from_unixtime sql函数:

    from pyspark.sql import functions as F
    from pyspark.sql import types as T
    l1 = [('1358380800',),('1380672000',)]
    df = spark.createDataFrame(l1,['Time'])
    df.withColumn('Time', F.from_unixtime(df.Time).cast(T.TimestampType())).show()
    

    输出:

    +-------------------+ 
    |               Time|
    +-------------------+
    |2013-01-17 01:00:00|
    |2013-10-02 02:00:00|
    +-------------------+
    

    【讨论】:

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