将DataFrame中int64类型日期列转为datetime类型时异常求助
解决Excel风格日期转datetime显示1970-01-01的问题
你的date列存储的是Excel风格的日期数值(从1900年1月1日起算的天数),而非%Y%m%d格式的整数(如20240520),用format='%Y%m%d'解析会导致小数值被误判为远早于Unix纪元的日期,最终显示为1970-01-01。
正确转换方法
- 基础转换(适用于1900-03-01及以后的日期):
transac['date'] = pd.to_datetime(transac['date'], unit='D', origin='1900-01-01')
- 兼容1900-02-28之前的日期(修复Excel的闰年bug):
# 对数值≥60的日期减1,修正Excel的1900闰年错误 transac['date'] = pd.to_datetime( transac['date'] - (transac['date'] >= 60).astype(int), unit='D', origin='1900-01-01' )
内容的提问来源于stack exchange,提问作者ahmedhalim
相关产品推荐
相关产品推荐

