cftime.DatetimeNoLeap对象无法通过pandas.to_datetime()进行转换

时间:2019-01-31 14:30:44

标签: pandas time python-xarray

我正在使用xarray读取多个气候模型数据,由于升级python,我的代码现已停止工作。

它崩溃了,因为某些模型数据具有不同的日历:

In [15]: ds.coords['time'].values[0]
Out[15]: cftime.DatetimeNoLeap(1861, 1, 16, 12, 0, 0, 0, 0, 16)

这意味着pandas.to_datetime()失败:

pd.to_datetime(ds.coords['time'].values[0])
TypeError: <type 'cftime._cftime.DatetimeNoLeap'> is not convertible to datetime

有没有解决的办法?

1 个答案:

答案 0 :(得分:2)

xaray最近进行了更改,以更好地支持非标准日历。 xarray文档中有一整节描述了这些更改以及如何还原以前的行为(link to docs)。

我认为在您的情况下,如果要将时间值转换为标准的完整Pandas日期时间,则可以简单地使用to_datetimeindex()方法:

ds.indexes['time'].to_datetimeindex()