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

使用pandas转换日期字符串为datetime对象时遇组名重定义错误求助

解决日期字符串转换时的"redefinition of group name 'd'"错误

错误原因

你遇到的这个错误,是因为pd.to_datetime的format参数里重复使用了%d、%m这类格式标识符。底层解析时会把这些标识符当作正则命名分组,重复的分组名直接触发了冲突。

解决方案

既然原字符串是两个时间点用"-"分隔的范围格式,直接拆分后分别解析是最稳妥的方式,步骤如下:

  • 拆分原字符串,分离出开始、结束时间的独立字符串
  • 分别将两个字符串解析为datetime对象
  • 从datetime对象中提取日期、开始时间、结束时间到单独列

完整代码

import pandas as pd

# 模拟导入的CSV数据
df = pd.DataFrame({'datetime': ['01.01.2021 00:00 - 01.01.2021 01:00']})

# 拆分开始和结束时间字符串
df[['start_str', 'end_str']] = df['datetime'].str.split(' - ', expand=True)

# 分别解析为datetime对象(指定格式保证解析效率)
df['start_datetime'] = pd.to_datetime(df['start_str'], format='%d.%m.%Y %H:%M')
df['end_datetime'] = pd.to_datetime(df['end_str'], format='%d.%m.%Y %H:%M')

# 提取目标列
df['date'] = df['start_datetime'].dt.date
df['start_time'] = df['start_datetime'].dt.time
df['end_time'] = df['end_datetime'].dt.time

# 按需清理中间列
df = df.drop(columns=['datetime', 'start_str', 'end_str'])

补充说明

如果不想手动拆分,也可以不指定format参数让pandas自动解析(底层用dateutil.parser),但指定格式的解析速度更快,尤其是处理大体积CSV文件时优势明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:45:02