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

使用datetime按日期小时分组Time(+01:00)列遇ValueError问题

问题解决:ValueError: time data 'Time(+01:00)' does not match format '%H:%M:%S'

错误原因

报错核心是数据中存在值为Time(+01:00)的行,该字符串不匹配%H:%M:%S的时间格式,导致pd.to_datetime解析失败。通常是读取数据时重复导入了表头,使得某一行的时间列值被替换成了列名本身。

解决方案

1. 清理脏数据

先过滤掉时间列不符合HH:MM:SS格式的无效行:

# 筛选出时间列符合标准格式的行
df = df[df['Time(+01:00)'].str.match(r'^\d{2}:\d{2}:\d{2}$')]

2. 提取小时并分组计算均值

数据清理完成后,提取小时字段并按日期+小时维度分组:

# 从时间字符串中提取小时
df['Hour'] = pd.to_datetime(df['Time(+01:00)'], format='%H:%M:%S').dt.hour
# 按日期和小时分组求均值
df_grouped = df.groupby(['Date', 'Hour']).mean().reset_index()
# 查看结果
df_grouped.head()

可选优化:合并日期时间为完整datetime对象

如果后续需要更灵活的时间操作,建议合并日期和时间列生成完整的datetime:

# 合并日期与时间列,指定日期格式为YYYY.MM.DD
df['Full_Datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time(+01:00)'], format='%Y.%m.%d %H:%M:%S')
# 提取小时
df['Hour'] = df['Full_Datetime'].dt.hour
# 按日期和小时分组
df_grouped = df.groupby([df['Full_Datetime'].dt.date, 'Hour']).mean().reset_index()

注意事项

  • groupby().mean()会自动生成唯一的分组结果,无需额外调用drop_duplicates()。
  • 你的时间是24小时制,%H格式符完全适配该场景,无需修改格式参数。

内容的提问来源于stack exchange,提问作者Sasi Sandeep Singh Bhemal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:50:43