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

使用pandas转换整数年份为日期时所有年份变为1970如何解决

问题原因

你提取得到的年份为纯数值格式(如1980、2000),pd.to_datetime()默认会将纯整数值识别为Unix时间戳,即从1970-01-01 00:00:00 UTC开始计算的秒/毫秒数。1980、2000这类数值仅对应1970年1月1日开始的几千秒,换算后仍属于1970年,因此所有转换结果的年份都显示为1970。

解决方法

根据你的使用需求,可以选择以下任意一种方案:

  • 若需要转换为标准datetime格式,明确指定格式为年份即可:
    df['Year'] = pd.to_datetime(df['Year'], format='%Y')
    
    转换后的值默认为对应年份的1月1日(如1980对应1980-01-01),年份字段和原始数据一致。
  • 若仅需要可用于统计、筛选的年份值,直接转换为整数类型即可,无需转datetime:
    df['Year'] = df['Year'].astype(int)
    
    该方案占用内存更低,普通的年份分组、对比运算都可以正常执行。
  • 若后续可能用到完整日期信息,可以直接从原始列转换完整日期,再按需提取年份:
    # 先提取日期部分,转换为完整datetime格式
    df['FullDate'] = pd.to_datetime(df['Original Column'].str.split(r' \(').str[0])
    # 单独提取年份列
    df['Year'] = df['FullDate'].dt.year
    

内容的提问来源于stack exchange,提问作者tu le

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:06:05