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

Python中如何将时间区间字符串转换为datetime类型?

解决时间列转换为datetime的问题

你的原代码报错大概率是因为数据中存在格式不匹配的行,或是pandas对这种包含时间区间的长字符串转换时出现隐性问题。推荐通过**提取时间区间的单个时间点(起始/结束)**拆分转换,这种方式更稳定高效,具体方案如下:

方案1:提取起始时间并转换

由于你的数据是15分钟间隔的统计数据,通常用区间的起始时间作为时间戳就足够:

# 拆分出时间区间的起始部分
dftotalload2020['start_time'] = dftotalload2020['Time (CET/CEST)'].str.split(' - ').str[0]
# 转换为datetime类型
dftotalload2020['start_time'] = pd.to_datetime(dftotalload2020['start_time'], format='%d.%m.%Y %H:%M')

方案2:同时提取起始和结束时间

如果需要保留区间的两个时间点,可以拆分出两列分别转换:

# 拆分起始、结束时间为新列
dftotalload2020[['start_time', 'end_time']] = dftotalload2020['Time (CET/CEST)'].str.split(' - ', expand=True)
# 分别转换为datetime类型
dftotalload2020['start_time'] = pd.to_datetime(dftotalload2020['start_time'], format='%d.%m.%Y %H:%M')
dftotalload2020['end_time'] = pd.to_datetime(dftotalload2020['end_time'], format='%d.%m.%Y %H:%M')

排查原代码报错原因

如果一定要用原格式直接转换,可以先定位格式异常的行:

# 标记转换失败的行(返回NaN)
dftotalload2020['time_converted'] = pd.to_datetime(
    dftotalload2020['Time (CET/CEST)'], 
    format='%d.%m.%Y %H:%M - %d.%m.%Y %H:%M', 
    errors='coerce'
)
# 筛选出转换失败的行
invalid_rows = dftotalload2020[dftotalload2020['time_converted'].isna()]
print(invalid_rows)

查看这些异常行的时间格式,修正后再重新执行原代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:20:14