如何从Pandas DataFrame日期列提取唯一年份?解决格式报错
解决多格式日期解析问题并提取唯一年份
你指定固定格式%Y-%m-%d报错的原因是DOB列存在多种日期格式(如31-12-9999、01/01/1855)、带时分秒的时间字符串,还有无效值#VALUE!,单一格式无法匹配所有情况。改用以下方案即可解决:
# 解析日期:自动识别多种格式,将无效值转为NaT(无效时间标记) df_dob['DOB_parsed'] = pd.to_datetime(df_dob['DOB'], errors='coerce') # 提取年份、过滤无效值、生成唯一年份列表 unique_years = df_dob['DOB_parsed'].dt.year.dropna().unique().astype(str).tolist() print(unique_years)
关键步骤说明:
pd.to_datetime(..., errors='coerce'):自动适配多种日期/时间格式,遇到#VALUE!这类无法解析的内容时转为NaT,避免抛出错误中断程序。dt.year:从解析后的标准日期列中提取年份数值。dropna():剔除无效值对应的空年份,保证结果只包含有效年份。unique().astype(str).tolist():去重后转成字符串类型,最终生成你需要的列表格式(如['9999', '1855', '1967'])。
如果你的数据中存在mm-dd-yyyy和dd-mm-yyyy混合的情况,可以额外添加dayfirst=True参数,帮助Pandas更准确识别日在前的格式。
内容的提问来源于stack exchange,提问作者maven
相关产品推荐
相关产品推荐

