解决Pandas转换Excel风格日期值时出现的OutOfBoundsDatetime错误并获取目标日期格式
解决Unix时间戳转标准日期时间的问题
嘿,我一眼就看出问题所在啦!你手里的launched_at列数值(比如1375134026、1377313137)根本不是Excel风格的日期,而是秒级的Unix时间戳——这就是你用Excel日期转换方法触发OutOfBoundsDatetime错误的原因!
为什么之前的方法会报错?
Excel日期是从1899-12-30开始累计的天数,比如数值1对应1899-12-31。而你把秒级时间戳当成天数处理的话,137万多天会算出远超出pandas支持范围的日期(pandas默认支持的日期区间大概是1677年到2262年),自然会触发越界错误。
正确的转换方法
直接使用pd.to_datetime(),指定unit='s'(表示输入是秒级Unix时间戳)即可,不需要设置origin参数:
import pandas as pd # 转换秒级Unix时间戳为标准日期时间 cf_success['launch date'] = pd.to_datetime(cf_success['launched_at'], unit='s')
额外优化:指定时区(可选)
如果你的时间戳是UTC时间,想要转换成特定时区(比如北京时间),可以加上时区参数并做转换:
# 先转成UTC时间,再转换为北京时间 cf_success['launch date'] = pd.to_datetime(cf_success['launched_at'], unit='s', tz='UTC').tz_convert('Asia/Shanghai')
验证示例
拿你的数值1375134026测试,转换后会得到2013-07-30 15:00:26(UTC时间),如果转成北京时间就是2013-07-30 23:00:26,完全符合你想要的标准日期时间格式。
内容的提问来源于stack exchange,提问作者K C
相关产品推荐
相关产品推荐

