Pandas使用pd.to_datetime转换年份列时年份被识别为秒数怎么办
问题原因
pd.to_datetime()默认会将纯数字输入识别为Unix时间戳,也就是从1970-01-01 00:00:00开始的时间偏移量,你输入的年份数值会被当作偏移值解析,才会出现年份被识别到1970年的错误。
解决方法
以下两种方案都可以实现需求:
- 方案1:指定format参数强制按年份解析
直接声明输入内容为4位年份格式,方法会自动补全为当年1月1日0点,完全匹配你要求的输出格式:
winds["YEAR"] = pd.to_datetime(winds["YEAR"], format="%Y")
- 方案2:手动拼接自定义日期后转换
如果你需要自定义月、日、时分秒的数值,可以先把年份转为字符串拼接成完整日期再转换,灵活度更高:
# 示例:自定义为每年3月15日 08:00:00 winds["YEAR"] = pd.to_datetime(winds["YEAR"].astype(str) + "-03-15 08:00:00")
结果验证
转换后可以执行以下代码校验输出是否符合预期:
print(winds["YEAR"].sample(5))
内容的提问来源于stack exchange,提问作者Candace Agonafir
相关产品推荐
相关产品推荐

