【发布时间】:2019-02-01 20:31:19
【问题描述】:
我一直在使用 pyspark 2.3。我有一个数据框,其中包含 DateTime 值的字符串格式的“时间”列。列的样子:
+---------------+
| TIME|
+---------------+
| 2016/04/14 190|
| 2016/04/15 180|
|2016/04/14 1530|
|2016/04/16 1530|
| 2016/04/17 160|
+---------------+
190 或 1530 中的前两位数字表示小时,其余为分钟。
我尝试使用以下几行将其转换为时间戳类型:
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|
+---------------+
【问题讨论】:
标签: casting pyspark unix-timestamp