gpt4 book ai didi

apache-spark - 如何从pyspark中的时间戳中提取时间?

转载 作者:行者123 更新时间:2023-12-04 08:58:26 27 4
gpt4 key购买 nike

我需要使用 pyspark 从时间戳(这是数据帧中的一列)中提取时间。
假设这是时间戳 2019-01-03T18:21:39 ,我只想提取时间“18:21:39”,使其始终以“01:01:01”这种方式出现

df = spark.createDataFrame(["2020-06-17T00:44:30","2020-06-17T06:06:56","2020-06-17T15:04:34"],StringType()).toDF('datetime')

df=df.select(df['datetime'].cast(TimestampType()))
我试过如下但没有得到预期的结果
df1=df.withColumn('time',concat(hour(df['datetime']),lit(":"),minute(df['datetime']),lit(":"),second(df['datetime'])))

display(df1)
+-------------------+-------+
| datetime| time|
+-------------------+-------+
|2020-06-17 00:44:30|0:44:30|
|2020-06-17 06:06:56| 6:6:56|
|2020-06-17 15:04:34|15:4:34|
+-------------------+-------+
我的结果是这样的 6:6:56但我希望他们是 06:06:56

最佳答案

使用 date_format功能。

from pyspark.sql.types import StringType

df = spark \
.createDataFrame(["2020-06-17T00:44:30","2020-06-17T06:06:56","2020-06-17T15:04:34"], StringType()) \
.toDF('datetime')

from pyspark.sql.functions import date_format
q = df.withColumn('time', date_format('datetime', 'HH:mm:ss'))

>>> q.show()
+-------------------+--------+
| datetime| time|
+-------------------+--------+
|2020-06-17T00:44:30|00:44:30|
|2020-06-17T06:06:56|06:06:56|
|2020-06-17T15:04:34|15:04:34|
+-------------------+--------+

关于apache-spark - 如何从pyspark中的时间戳中提取时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63691162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com