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

Pandas/Python中如何将日期与小时转换为时间戳

合并Date和Hour列为Datetime对象的解决方案

嘿,这个问题我熟!你已经把Date列转成datetime了,剩下的Hour列处理其实很简单,咱们一步步来搞定它:

核心思路

我们需要把Hour列的0200格式转换成02:00这样的标准时分格式,然后和已经是datetime类型的Date列拼接,最终转成完整的datetime对象。

具体实现方法

方法1:分步处理(清晰直观)

适合新手理解每一步的操作:

import pandas as pd

# 先把Date列转为datetime(你已经完成这一步啦)
df['Date'] = pd.to_datetime(df['Date'])

# 1. 把Hour列转为4位字符串(处理类似200这样的整数,补前导零成0200)
df['Hour_str'] = df['Hour'].astype(str).str.zfill(4)

# 2. 分割小时和分钟,拼接成HH:MM格式
df['Hour_formatted'] = df['Hour_str'].str.slice(0, 2) + ':' + df['Hour_str'].str.slice(2, 4)

# 3. 合并Date和格式化后的Hour,转成datetime
df['Datetime'] = pd.to_datetime(df['Date'].dt.strftime('%Y-%m-%d') + ' ' + df['Hour_formatted'])

方法2:一步到位(简洁高效)

用正则表达式直接替换,省去中间列:

import pandas as pd

df['Date'] = pd.to_datetime(df['Date'])

# 直接合并并转换,用正则把0200替换成02:00
df['Datetime'] = pd.to_datetime(
    df['Date'].astype(str) + ' ' + 
    df['Hour'].astype(str).str.zfill(4).str.replace(r'(\d{2})(\d{2})', r'\1:\2')
)

关键注意点

  • 如果你的Hour列是整数类型(比如存储的是200而不是'0200'),一定要用str.zfill(4)补前导零,确保它变成4位字符串,否则分割或正则替换会出错。
  • 最终生成的Datetime列就是标准的datetime对象,完全适配时间序列分析的需求,比如你想要的2017-01-01 02:00:00格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:10:16