gpt4 book ai didi

casting - Pyspark:将列从字符串类型转换为时间戳类型

转载 作者:行者123 更新时间:2023-12-05 03:02:46 24 4
gpt4 key购买 nike

我一直在使用 pyspark 2.3。我有一个数据框,其中包含 DateTime 值的字符串格式的“TIME”列。该列看起来像:

+---------------+
| TIME|
+---------------+
| 2016/04/14 190|
| 2016/04/15 180|
|2016/04/14 1530|
|2016/04/16 1530|
| 2016/04/17 160|
+---------------+

1901530 中的前两位代表小时,其余为分钟。我尝试使用以下行将其转换为时间戳类型:

df.withColumn('TIME_timestamp',fn.unix_timestamp('TIME','yyyy/MM/dd HHMM').cast(TimestampType()))

还有:

df.withColumn('TIME_timestamp', fn.to_timestamp("TIME", 'yyyy/MM/dd HHMM'))

但结果是:

+---------------+-------------------+
| TIME| TIME_timestamp|
+---------------+-------------------+
| 2016/04/14 190| null|
| 2016/04/15 180| null|
|2016/04/14 1530| null|
|2016/04/16 1530| null|
| 2016/04/17 160| null|
+---------------+-------------------+

因此所需的 Dataframe 应该如下所示:

+---------------+
| TIME_timestamp|
+---------------+
| 16-04-15 19:00|
| 16-04-15 18:00|
| 16-04-15 15:30|
| 16-04-15 15:30|
| 16-04-15 16:00|
+---------------+

最佳答案

您使用大写字母 M 来标识月份和分钟; session 记录应使用 m 标识,请参阅 here .下面给出了一个使用 to_timestamp 的工作示例,希望对您有所帮助!

import pyspark.sql.functions as F

df = sqlContext.createDataFrame(
[
('2016/04/14 190',),
('2016/04/15 180',),
('2016/04/14 1530',),
('2016/04/16 1530',),
('2016/04/17 160',)
],
("TIME",)
)

df.withColumn('TIME_timestamp',F.to_timestamp("TIME", "yyyy/MM/dd HHmm")).show()

输出:

+---------------+-------------------+
| TIME| TIME_timestamp|
+---------------+-------------------+
| 2016/04/14 190|2016-04-14 19:00:00|
| 2016/04/15 180|2016-04-15 18:00:00|
|2016/04/14 1530|2016-04-14 15:30:00|
|2016/04/16 1530|2016-04-16 15:30:00|
| 2016/04/17 160|2016-04-17 16:00:00|
+---------------+-------------------+

关于casting - Pyspark:将列从字符串类型转换为时间戳类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54479093/

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