如何使用pandas读取包含24:00而非00:00时间格式的CSV文件
错误原因
你的报错核心是硬切片逻辑不匹配字段格式:
你采用固定下标拆分日期和时间,但Datetime字段值前后、日期和时间之间都存在空格,str[10:12]、str[12:14]实际切取到了空格、冒号等无效字符,拼接后生成的 0:0::00不符合时间差格式要求,触发报错。
修复方案
方案1(更鲁棒,推荐)
用字符串分割替代硬切片,自动适配空格、字段长度波动的场景:
# 去除字段前后空格后拆分日期、时间两部分 dt_parts = df['Datetime'].str.strip().str.split(' ', n=1, expand=True) # 转换日期部分 date = pd.to_datetime(dt_parts[0], format='%d.%m.%Y') # 直接转换时间部分为时间差,自动适配24:00的特殊情况 time_delta = pd.to_timedelta(dt_parts[1] + ':00') # 合并得到最终时间 df['Datetime'] = date + time_delta
方案2(适配你原有逻辑)
先清理字符串空格,修正切片规则即可:
dt_clean = df['Datetime'].str.strip() df['Datetime'] = ( pd.to_datetime(dt_clean.str[:10], format='%d.%m.%Y') + pd.to_timedelta(dt_clean.str[11:] + ':00') )
以上两种方案都可以正确识别24:00格式,自动转换为次日00:00,不会出现格式报错。
内容的提问来源于stack exchange,提问作者user16511234
相关产品推荐
相关产品推荐

