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

PySpark如何从datetime字符串中提取小时并统计各小时出现次数

PySpark 从日期时间字符串统计各小时记录数实现方案

完全不需要手动拆分日期和时间为独立字符串,PySpark提供了原生内置函数可以直接完成小时提取和统计,是更高效简洁的实现方式。

你的日期时间字符串是YYYY-MM-DD HH:MM:SS的标准格式,直接调用hour()函数即可提取0-23范围的小时值,不需要做字符串切割、类型拆分这类冗余操作。

具体实现代码

假设你的日期时间字符串列名为datetime_col,统计代码如下:

from pyspark.sql import functions as F

# 直接提取小时后分组计数,按小时升序排序
hour_stat_df = df.withColumn("hour", F.hour("datetime_col")) \
    .groupBy("hour") \
    .count() \
    .orderBy("hour")

如果你的数据里存在少量格式不规范的异常值,可以先显式指定格式转换为时间戳类型再提取小时,兼容性更强:

from pyspark.sql import functions as F

hour_stat_df = df.withColumn(
        "hour", 
        F.hour(F.to_timestamp("datetime_col", "yyyy-MM-dd HH:mm:ss"))
    ) \
    .groupBy("hour") \
    .count() \
    .orderBy("hour")

为什么不推荐手动拆分字符串

手动用split()等字符串函数切割日期、时间片段再提取小时的方式,代码冗余度高,还需要额外处理空值、字符串转整数等边界问题,执行性能也远低于Spark优化过的原生日期时间函数,没有必要使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:51:46