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

如何从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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:33:57