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

转换含小数小时的日期字符串为pandas datetime出现ParserError如何解决

问题解决方法

报错原因

你传入的date列字符串包含非标准时间格式:空格后的值为小数形式的小时数,不属于pd.to_datetime支持的默认解析格式,也无法通过常规的format参数直接适配,因此触发解析错误。

处理方案

先拆分字符串的日期部分和小数小时部分,分别转换后合并为完整的datetime类型:

import pandas as pd

dfff = pd.DataFrame({'date': ['01-01-2016 0.55', '01-01-2016 1.26', '01-01-2016 4.51', 
                    '01-01-2016 7.43']}) 

# 方法1:拆分处理逻辑清晰,便于调试
# 拆分日期与小数小时
date_split = dfff['date'].str.split(' ', expand=True)
# 转换日期部分为datetime,默认是日-月-年格式,如果是月-日-年可修改format参数为'%m-%d-%Y'
date_part = pd.to_datetime(date_split[0], format='%d-%m-%Y')
# 转换小数小时为时间偏移量
hour_offset = pd.to_timedelta(date_split[1].astype(float), unit='h')
# 合并得到最终datetime列
dfff['datetime'] = date_part + hour_offset

# 方法2:单行简化写法
# dfff['datetime'] = dfff['date'].apply(lambda x: pd.to_datetime(x.split()[0], format='%d-%m-%Y') + pd.to_timedelta(float(x.split()[1]), unit='h'))

print(dfff)

运行后输出的转换结果示例:

datedatetime
01-01-2016 0.552016-01-01 00:33:00
01-01-2016 1.262016-01-01 01:15:36
01-01-2016 4.512016-01-01 04:30:36
01-01-2016 7.432016-01-01 07:25:48

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03