Pandas整数转日期时间错误:需匹配Excel转换结果
解决Pandas转换Excel整数日期与Excel结果不一致的问题
你的问题出在错误地将Excel日期数值当成了Unix时间戳:
- Excel的整数日期代表从
1900-01-01开始计算的天数(包含一个历史遗留的1900年闰年bug) - 你用
unit='s'告诉Pandas把数值当成从1970-01-01开始的秒数,自然得到1970年初的错误结果
正确转换代码
直接指定Excel的日期起始原点和天数单位即可:
# 转换Excel风格的日期数值为datetime类型 Transactions['product_first_sold_date'] = pd.to_datetime( Transactions['product_first_sold_date'], origin='1900-01-01', unit='D' ) # 查看转换结果 Transactions['product_first_sold_date'].head()
说明
origin='1900-01-01':对齐Excel的日期起始点unit='D':明确数值代表的是天数而非秒数- Pandas会自动处理Excel的1900年闰年bug(即Excel错误地将1900年视为闰年),转换结果会和Excel完全一致,比如
41245.00会转为2012-12-02,41701.00转为2014-03-03
内容的提问来源于stack exchange,提问作者Nor Elhouda Gribi
相关产品推荐
相关产品推荐

