【问题标题】:xarray: coords conversion to datetime64xarray:坐标转换为 datetime64
【发布时间】:2020-10-15 18:04:26
【问题描述】:

我有一个使用 xarray 处理的 NetCDF4 文件。 数据集的“时间”坐标为 dtype=object,我想将其转换为 datetime64 以简化文件中包含的变量的绘图。 我的计划是使用

创建一个名为“time1”的新时间坐标
ds.assign_coords(time1=pd.to_datetime(ds.time.values,infer_datetime_format=True))

然后删除旧的。但我得到一个新坐标仍然是 dtype=object。 here's how the new dataset looks like

我做错了什么?

【问题讨论】:

    标签: python-xarray netcdf4 datetimeindex


    【解决方案1】:

    此类问题通常可以通过以下方式解决:

    ds['time'] = pd.DatetimeIndex(ds['time'].values)

    这是一个示例,在应用上述行之前:

    <xarray.Dataset>
    Dimensions:  (time: 93)
    Coordinates:
      * time     (time) object 1593128700000000000 ... 1593211500000000000
    Data variables:
        val      (time) float64 4.23 4.25 4.24 4.23 4.24 ... 4.08 4.07 4.07 4.07
    

    之后:

    <xarray.Dataset>
    Dimensions:  (time: 93)
    Coordinates:
      * time     (time) datetime64[ns] 2020-06-25T23:45:00 ... 2020-06-26T22:45:00
    Data variables:
        val      (time) float64 4.23 4.25 4.24 4.23 4.24 ... 4.08 4.07 4.07 4.07
    

    【讨论】:

    • 天啊,这么简单的解决方案。为什么我没有想到呢?谢谢丹!
    • 很高兴为您提供帮助,如果此答案解决了您的问题,请单击答案旁边的复选标记将其标记为已接受。请参阅:How does accepting an answer work? 了解更多信息。
    • @Dan 你介意解释一下为什么这是必要的吗?当我执行pd.to_xarray() 时,我的数据框包含datetime64,但xarray 输出包含pd.Timestamp 对象。目前尚不清楚为什么会发生重铸。
    猜你喜欢
    • 1970-01-01
    • 2020-03-06
    • 2019-07-07
    • 1970-01-01
    • 2021-12-12
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    相关资源
    最近更新 更多