pd.to_datetime转换日期报错ValueError:时间数据格式不匹配求助
解决方法
你的问题出在release_date列里混合了多种日期格式——既有完整的YYYY-MM-DD格式,又有仅含年份的YYYY格式(比如报错里的"1922"),而pd.to_datetime默认按统一格式解析,所以触发了格式不匹配的错误。下面是两种可行的解决方式:
方法一:自动推断混合格式(推荐)
直接给pd.to_datetime加上format='mixed'参数,让pandas自动识别每个日期字符串的格式:
df_tracks.set_index('release_date', inplace=True) # 添加format='mixed'参数 df_tracks.index = pd.to_datetime(df_tracks.index, format='mixed') df_tracks.head()
这个参数会逐个判断每个元素的格式,能兼容纯年份、不同分隔符的日期等多种情况,无需手动处理每个格式。
方法二:手动统一日期格式
如果需要把纯年份的日期统一转为当年的1月1日,可以先预处理数据再转换:
# 先重置索引,把release_date变回普通列 df_tracks.reset_index(inplace=True) # 对仅含4位数字的日期补全为YYYY-01-01 df_tracks['release_date'] = df_tracks['release_date'].apply( lambda x: f"{x}-01-01" if len(str(x)) == 4 else x ) # 重新设置索引并转换为日期类型 df_tracks.set_index('release_date', inplace=True) df_tracks.index = pd.to_datetime(df_tracks.index) df_tracks.head()
这种方式能精准控制日期的解析结果,适合对日期格式有统一要求的场景。
内容的提问来源于stack exchange,提问作者Kondapalli Sri Krishna Priya
相关产品推荐
相关产品推荐

