如果以前有人问过这个问题,我很抱歉,但我似乎找不到一个能描述我当前问题的问题。
基本上,我有一个大型气候数据集,它不一定是";真实的";日期。数据集开始于";第一年";并转到";9999年";。这些日期存储为字符串,如Jan-01、Feb-01、Mar-01等,其中数字表示年份。当试图将此列转换为日期-时间对象时,我得到了一个超出范围的错误。(我对此的解读表明,这是由于可能存在的日期时间戳的64位限制(
解决这个问题/处理日期信息的好方法是什么,这样我就可以有效地绘制出相关数据与这些日期之间的关系,在这大约10000年的时间里?
感谢
cftime库是专门为此目的创建的,xarray有一个方便的xr.cftime_range
函数,可以轻松创建这样的范围:
In [3]: import xarray as xr, pandas as pd
In [4]: date_range = xr.cftime_range('0001-01-01', '9999-01-01', freq='D')
In [5]: type(date_range)
Out[5]: xarray.coding.cftimeindex.CFTimeIndex
这创建了一个CFTimeIndex
对象,它可以很好地与pandas:配合使用
In [8]: df = pd.DataFrame({"date": date_range, "vals": range(len(date_range))})
In [9]: df
Out[9]:
date vals
0 0001-01-01 00:00:00 0
1 0001-01-02 00:00:00 1
2 0001-01-03 00:00:00 2
3 0001-01-04 00:00:00 3
4 0001-01-05 00:00:00 4
... ... ...
3651692 9998-12-28 00:00:00 3651692
3651693 9998-12-29 00:00:00 3651693
3651694 9998-12-30 00:00:00 3651694
3651695 9998-12-31 00:00:00 3651695
3651696 9999-01-01 00:00:00 3651696
[3651697 rows x 2 columns]