- 积分
- 43507
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2019-5-13
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 一大碗年糕 于 2026-1-31 14:55 编辑
昨天处理了一些nc数据碰到一个问题记录一下。
问题描述:在用xr.open_mfdataset批量读取nc文件的时候,时间出现了
- 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
|
|