我想知道是否有比我目前使用的方法更好的方法将日期列转换为日期时间列+ 1小时。
这是我的数据框:
df = sc.parallelize([
['2019-08-29'],
['2019-08-30'],
['2019-09-1'],
['2019-09-2'],
['2019-09-4'],
['2019-09-10']
]).toDF(['DATE']).withColumn('DATE',col('DATE').cast('date'))
我的代码:
df1 = df.withColumn(
'DATETIME',
((col('DATE').cast('timestamp').cast('long')+3600)).cast('timestamp')
)
给出输出:
+----------+-------------------+
| DATE| DATETIME|
+----------+-------------------+
|2019-08-29|2019-08-29 01:00:00|
|2019-08-30|2019-08-30 01:00:00|
|2019-09-01|2019-09-01 01:00:00|
|2019-09-02|2019-09-02 01:00:00|
|2019-09-04|2019-09-04 01:00:00|
|2019-09-10|2019-09-10 01:00:00|
+----------+-------------------+
有谁知道这样做的更有效方法。两次转换为时间戳似乎有点笨拙。
非常感谢。
您可以使用以下方式:
from pyspark.sql.functions import expr
df1 = df.withColumn('DATETIME',
col('DATE').cast('timestamp')+ expr('INTERVAL 1 HOURS'))
那么您可以阅读有关间隔语法的更多信息,例如,在以下Databricks的博客文章中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句