python - 如何将多列(即时间、年、月和日期)转换为 pyspark 数据框中的日期时间格式

标签 python python-3.x apache-spark pyspark apache-spark-sql

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/

相关文章:

python - 将内核存储在单独的文件中 - PyOpenCL

python - 使用 mongoengine 将文件上传到 DEFAULT_FILE_STORAGE 而不是 GridFs

Python networkx加权图在最短路径计算中不考虑节点的权重?

python - Python 3 中解析 XML 模式的 LXML 问题

python - 如何检查不同张量pytorch中的张量值?

scala - Spark 中的 Broadcast Hash Join (BHJ) 用于全外连接(outer、full、fulouter)

python - 我的 Python 中的二分搜索功能不起作用

python - 有没有办法在 Jupyter Lab 中切换单元格输出?

apache-spark - Spark on Yarn 发送 RPC 失败且 Slave 丢失

apache-spark - Apache Beam Spark/flink运行程序未在EMR中执行(从GCS访问文件)