使用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
相关产品推荐
相关产品推荐

