Pandas日期处理问题:需将后两位小于70的年份从20XX转换为19XX
错误原因
- 循环逻辑错误:遍历年份时每次判断都对整个DATE列全局修改,只要触发一次条件整列就统一加100年,多次循环后日期叠加偏移完全混乱
- 判断逻辑写反:需求是调整20XX年后两位小于70的日期为19XX,你写的条件是年份小于2000就加100年,和需求完全相反
- 不要用循环处理pandas列数据,向量化操作更稳定高效
正确实现代码
首先确保DATE列为日期格式:
import pandas as pd data['DATE'] = pd.to_datetime(data['DATE'])
按需求调整年份:
# 年份后两位小于70的日期减100年 data['DATE'] = data['DATE'].mask( data['DATE'].dt.year % 100 < 70, data['DATE'] - pd.offsets.DateOffset(years=100) )
效果验证
- 输入2061-01-01 → 输出1961-01-01,符合预期
- 输入2071-01-01 → 保留2071-01-01不变,符合规则
内容的提问来源于stack exchange,提问作者user873288
相关产品推荐
相关产品推荐

