pandas将object类型列转datetime时格式匹配错误如何解决
问题解决方法
错误原因
ValueError: time data '2020.01.01' does not match format '%Y.%m.%d.' (match)
该报错的核心原因是你指定的日期格式字符串末尾多了一个多余的英文句号.,实际待解析的日期值2020.01.01末尾没有对应的句号,格式匹配失败。
解决方法
方案1:修正格式字符串(推荐,性能最高)
如果所有待解析的日期都没有末尾的句号,直接删除格式字符串末尾的.即可:
df['Time'] = pd.to_datetime(df['Unnamed: 0'], format = '%Y.%m.%d')
指定明确格式的解析速度远高于自动推断,适合数据量较大的场景。
方案2:兼容带/不带末尾句号的混合数据
如果你的数据中部分日期带末尾句号、部分不带,可以先统一清理日期字符串再转换:
# 先删除日期字符串末尾的所有句号 df['Unnamed: 0'] = df['Unnamed: 0'].str.rstrip('.') # 再做日期转换 df['Time'] = pd.to_datetime(df['Unnamed: 0'], format = '%Y.%m.%d')
方案3:灵活解析(适合小数据量)
如果不想手动处理格式,也可以让pandas自动推断日期格式,不需要指定format参数:
# 自动推断格式,解析失败的记录会转为空值NaT,不会中断运行 df['Time'] = pd.to_datetime(df['Unnamed: 0'], errors='coerce')
内容的提问来源于stack exchange,提问作者Kbalint98
相关产品推荐
相关产品推荐

