You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PySpark中如何将多日期字段合并为单个Timestamp列

解决DataFrame日期字段转Timestamp类型的问题

现有如下结构的DataFrame:

yearmonthdayweekdayhour
2017January1Sunday0
2018September22Saturday11

需要新增一个Timestamp类型的列,期望结果格式为:

2017-01-01 00:00:00
2018-09-22 11:00:00

可行解决方案

直接利用Spark的to_timestamp函数,配合字段拼接和正确的格式字符串即可实现,不需要绕路用unix_timestamp。

Python 实现代码

from pyspark.sql import functions as F

# 新增timestamp列
df = df.withColumn(
    "timestamp_col",
    F.to_timestamp(
        # 用空格拼接年、月、日、小时字段
        F.concat_ws(" ", F.col("year"), F.col("month"), F.col("day"), F.col("hour")),
        # 指定匹配的格式:年份+英文全称月份+日期+小时
        "yyyy MMMM dd HH"
    )
)

Scala 实现代码

import org.apache.spark.sql.functions._

val df = df.withColumn(
    "timestamp_col",
    to_timestamp(
        concat_ws(" ", $"year", $"month", $"day", $"hour"),
        "yyyy MMMM dd HH"
    )
)

为什么之前用unix_timestamp失败?

unix_timestamp默认只识别yyyy-MM-dd HH:mm:ss这类格式,而你拼接的是带英文全称月份的字符串,格式不匹配导致解析失败。用to_timestamp并指定对应格式字符串,能直接完成类型转换,步骤更简洁。

内容的提问来源于stack exchange,提问作者Shubhomoy Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:20:25