首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将cftime.DatetimeJulian转换为datetime

将cftime.DatetimeJulian转换为datetime
EN

Stack Overflow用户
提问于 2019-04-22 05:38:17
回答 2查看 5.9K关注 0票数 5

我正在尝试为一个机器学习项目将xarray数据数组转换为pandas数据帧,但是时间数据似乎是cftime.DatetimeJulian格式的,不能使用pandas to_datetime()方法进行转换。有什么建议吗?谢谢。

代码语言:javascript
运行
复制
nor_xr.time

<xarray.DataArray 'time' (time: 1372)>
array([cftime.DatetimeJulian(2015, 3, 31, 0, 0, 0, 0, 0, 90),
       cftime.DatetimeJulian(2018, 12, 31, 0, 0, 0, 0, 6, 365)], dtype=object)
Coordinates:
  * time     (time) object 2015-03-31 00:00:00 ... 2018-12-31 00:00:00
Attributes:
    standard_name:  time
    axis:           T

nor_df = nor_xr.to_dataframe().reset_index()
nor_df.head()

    time
0   2015-03-31 00:00:00
1   2015-04-01 00:00:00

pd.to_datetime(nor_df.time)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-104-1f0fc00ad825> in <module>
      2 
      3 #|nor_df.time.unique()
----> 4 pd.to_datetime(nor_df.time)

~\AppData\Local\Continuum\anaconda3A\lib\site-packages\pandas\core\tools\datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, box, format, exact, unit, infer_datetime_format, origin, cache)
    449         else:
    450             from pandas import Series
--> 451             values = _convert_listlike(arg._values, True, format)
    452             result = Series(values, index=arg.index, name=arg.name)
    453     elif isinstance(arg, (ABCDataFrame, MutableMapping)):

~\AppData\Local\Continuum\anaconda3A\lib\site-packages\pandas\core\tools\datetimes.py in _convert_listlike(arg, box, format, name, tz)
    366                     dayfirst=dayfirst,
    367                     yearfirst=yearfirst,
--> 368                     require_iso8601=require_iso8601
    369                 )
    370 

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

pandas\_libs\tslib.pyx in pandas._libs.tslib.array_to_datetime()

TypeError: <class 'cftime._cftime.DatetimeJulian'> is not convertible to datetime
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-22 08:22:04

事实上,这是一个常见的请求。推荐的方法是提取索引(一个CFTimeIndex)并使用其内置的to_datetimeindex方法:

代码语言:javascript
运行
复制
datetimeindex = nor_xr.indexes['time'].to_datetimeindex()

然后,您可以用其对应的DatetimeIndex替换CFTimeIndex

代码语言:javascript
运行
复制
nor_xr['time'] = datetimeindex
票数 11
EN

Stack Overflow用户

发布于 2021-10-26 19:04:27

我找到了一种从cftime.DatetimeNoLeap转换为datetime对象的简单方法。例如datetimes是一个cftime.DatetimeNoLeap对象列表,其中datetimes = cftime.DatetimeNoLeap(1970,1,1,12,0,0,0,0,has_year_zero=True)

代码语言:javascript
运行
复制
datetime.strptime(str(datetimes[0]),'%Y-%m-%d %H:%M:%S')

这将得到datetime.datetime(1970,1,1,12,0)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55786995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档