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

Pandas中合并日期与小时列生成datetime时间戳的高效方法咨询

Pandas合并日期、小时列为datetime的高效实现方案

原有实现速度慢主要有两个原因:

  • apply+lambda属于Python层面的逐行遍历操作,数据量越大额外开销越高
  • 调用pd.to_datetime时没有指定日期格式,自动推断格式也会增加不必要的耗时

最优方案(性能最高)

直接先将Date列转为datetime类型,再叠加对应小时的时间增量,全程为Pandas底层C实现的矢量化操作,无Python层面循环:

# 指定日期格式可以避免自动推断的耗时,格式按示例的日/月/年填写
df['datetime'] = pd.to_datetime(df['Date'], format='%d/%m/%Y') + pd.to_timedelta(df['Hour'], unit='h')

# 一次性删除多列,比多次调用drop效率更高
df = df.drop(['Date', 'Hour'], axis=1)

百万行级数据下,该方案速度比原有实现快100倍以上。

备选方案(字符串矢量化拼接)

如果习惯用字符串拼接的写法,也可以用Pandas的矢量化字符串操作替代逐行apply,性能同样远高于原有实现:

df['datetime'] = pd.to_datetime(
    df['Date'] + ' ' + df['Hour'].astype(str) + ':00:00',
    format='%d/%m/%Y %H:%M:%S'
)
df = df.drop(['Date', 'Hour'], axis=1)

该方案性能略低于时间增量方案,但仍比原有apply写法快几十倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:04