Data frame 有 4 列 year,month,date,hhmm
hhmm - 小时和分钟连接在一起 例如:10:30 等于 1030
dd=spark.createDataFrame([(2019,2,13,1030),(2018,2,14,1000),(2029,12,13,0300)],["Year","month","date","hhmm"])
dd.collect()
pyspark dataframe dd 中日期时间格式的预期输出
dd.collect()
2019-02-13 10:30:00
2018-2-14 10:00:00
2019-12-13 03:00:00
最佳答案
对于 Spark 3+,您可以使用 make_timestamp
功能:
from pyspark.sql import functions as F
dd = dd.withColumn(
"time",
F.expr("make_timestamp(Year, month, date, substr(hhmm,1,2), substr(hhmm,3,2), 0)")
)
dd.show(truncate=False)
#+----+-----+----+----+-------------------+
#|Year|month|date|hhmm|time |
#+----+-----+----+----+-------------------+
#|2019|2 |13 |1030|2019-02-13 10:30:00|
#|2018|2 |14 |1000|2018-02-14 10:00:00|
#|2029|12 |13 |0300|2029-12-13 03:00:00|
#+----+-----+----+----+-------------------+
关于python - 如何将多列(即时间、年、月和日期)转换为 pyspark 数据框中的日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56088536/