爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 338|回复: 5

[经验总结] python读取nc文件时间超范围

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 一大碗年糕 于 2026-1-31 14:55 编辑

昨天处理了一些nc数据碰到一个问题记录一下。
问题描述:在用xr.open_mfdataset批量读取nc文件的时候,时间出现了
  1. array([Timestamp('1850-06-01 12:00:00'), Timestamp('1850-06-02 12:00:00'), Timestamp('1850-06-03 12:00:00'), ..., cftime.DatetimeProlepticGregorian(2849, 8, 29, 12, 0, 0, 0, has_year_zero=True), cftime.DatetimeProlepticGregorian(2849, 8, 30, 12, 0, 0, 0, has_year_zero=True), cftime.DatetimeProlepticGregorian(2849, 8, 31, 12, 0, 0, 0, has_year_zero=True)], dtype=object)
复制代码
即前后时间的格式不一致,然而nc文件都是统一下载的,研究之后才发现,原因时间跨度太大,超过了 pandas.Timestamp 能安全表示的范围(才知道有范围这一说)。pandas 的时间底层是 int64 纳秒,可表示的时间范围大约是:1677-09-21至2262-04-11。xarray 被迫把后面的时间改用 cftime,于是前后混用了两套时间类型。
解决方法:在读取长期的数据时设置use_cftime=True,避免pandas.Timestamp


密码修改失败请联系微信:mofangbao
发表于 4 天前 | 显示全部楼层
非常感谢大佬分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层

不是大佬,记性太差,发帖以防以后碰到忘了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
一大碗年糕 发表于 2026-1-31 14:57
不是大佬,记性太差,发帖以防以后碰到忘了

哈哈哈哈哈哈哈
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
这两种不同的处理时间的数据结构有一些很有意思的问题,Pandas的时间库跟“现实”中的时间对应很好,但对于模拟的时间会出现一大堆问题,比如你要制作一个不考虑闰年的时间序列,或者从0001年开始的时间序列,Pandas基本上做不到的。所以处理模式基本上都是cftime库来搞
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
Lancelot 发表于 2026-2-1 14:59
这两种不同的处理时间的数据结构有一些很有意思的问题,Pandas的时间库跟“现实”中的时间对应很好,但对于 ...

学习了!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表