如何解决如何从pyspark的时间戳中提取时间?
我需要使用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']),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|
+-------------------+--------+
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。