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
相关产品推荐
相关产品推荐

