如何使用Pandas将CSV中的数值型24小时时间列解析为时间格式
Pandas纯数字格式时间字段解析方案
核心问题答复
是否需要拼接OccurDate列完全取决于你的使用需求:
- 若仅需要独立的24小时制时间对象(
datetime.time类型),无需关联日期信息,不需要拼接,单独处理OccurTime列即可 - 若需要得到带日期的完整时间戳(
datetime64类型),用于后续时间序列计算、时间差统计等场景,则需要和OccurDate列拼接后统一解析
具体实现代码
方案1:单独解析时间列
纯数字格式的OccurTime实际是省略了前导零的4位时间值(例如345对应03:45),先补零到4位再按时间格式解析即可:
import pandas as pd # 补零到4位后转换为time类型 df['OccurTime'] = pd.to_datetime( df['OccurTime'].astype(str).str.zfill(4), format='%H%M' ).dt.time
方案2:拼接日期列生成完整时间戳
import pandas as pd # 生成4位格式的时间字符串 time_str = df['OccurTime'].astype(str).str.zfill(4) # 拼接日期与时间后解析为datetime类型 df['occur_datetime'] = pd.to_datetime( df['OccurDate'] + ' ' + time_str, # 若OccurDate格式非年-月-日,可修改此处format参数匹配实际格式 format='%Y-%m-%d %H%M', # 可选参数:非法值自动转为NaT避免报错 errors='coerce' )
注意事项
- 若
OccurDate列本身已经是datetime类型,可直接用pd.to_datetime(df['OccurDate'].dt.strftime('%Y-%m-%d') + ' ' + time_str)进行拼接 - 遇到超过2359的异常时间值时,建议先做数据清洗再解析,避免出现非预期的转换结果
内容的提问来源于stack exchange,提问作者Amanda_Panda
相关产品推荐
相关产品推荐

