开发者社区> 问答> 正文

Python Spark Dataframe:将字符串列转换为时间戳

我有时间列,它具有对象数据类型,并包含以下格式的值:

0 days 01:30:00.0

我想将上述时间列更改为HH:mm:ss的格式,以使其看起来像以下格式:

01:30:00

我使用以下代码将其转换为所需的格式:

df.withColumn('TIME_timestamp',F.to_timestamp("time", "HH:mm:ss")).show()

但是,它返回空列。上面的代码产生的输出是:

 time|              TIME_timestamp|
+-------------------+--------------+
0 days 00:00:00.0 |          null|
0 days 00:30:00.0 |          null|
0 days 01:00:00.0 |          null|
0 days 01:30:00.0 |          null|
0 days 02:00:00.0 |          null|
0 days 02:30:00.0 |          null|
+-------------------+---------------+

谁能指导我在哪里犯错?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 20:33:15 1068 0
1 条回答
写回答
取消 提交回答
  • 您可以使用子字符串将时间值获取到to_timestamp函数中。时间戳将提供其默认日期,因为时间戳需要日期。

    df.withColumn("Time_timestamp", F.to_timestamp(F.substring("time",7,9),"HH:mm:ss")).show()
    
    +-----------------+-------------------+
    |             time|     Time_timestamp|
    +-----------------+-------------------+
    |0 days 00:00:00.0|1970-01-01 00:00:00|
    |0 days 00:30:00.0|1970-01-01 00:30:00|
    |0 days 01:00:00.0|1970-01-01 01:00:00|
    |0 days 01:30:00.0|1970-01-01 01:30:00|
    +-----------------+-------------------+
    

    我建议您使用unix_timestamp将其保留为秒格式,以丢失日期部分。

    df.withColumn("Time_timestamp", F.unix_timestamp(F.substring("time",7,9),"HH:mm:ss")).show()
    
    +-----------------+--------------+
    |             time|Time_timestamp|
    +-----------------+--------------+
    |0 days 00:00:00.0|             0|
    |0 days 00:30:00.0|          1800|
    |0 days 01:00:00.0|          3600|
    |0 days 01:30:00.0|          5400|
    +-----------------+--------------+
    

    或者只是将其保留为字符串:

    df.withColumn("Time_timestamp", F.substring("time",7,9)).show()
    
    +-----------------+--------------+
    |             time|Time_timestamp|
    +-----------------+--------------+
    |0 days 00:00:00.0|      00:00:00|
    |0 days 00:30:00.0|      00:30:00|
    |0 days 01:00:00.0|      01:00:00|
    |0 days 01:30:00.0|      01:30:00|
    +-----------------+--------------+
    

    回答来源:stackoverflow

    2020-03-24 20:33:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载