根据 xarray.Dataset 中的时间索引打印出特定变量

问题描述

我完全迷失了,不知道该怎么做。

我使用 nc = xarray.open_dataset(...) 访问了一个 netCDF 文件。数据集包含以下内容

<xarray.Dataset>
Dimensions:    (latitude: 121,longitude: 261,time: 8760)
Coordinates:
  * longitude  (longitude) float32 -20.0 -19.75 -19.5 -19.25 ... 44.5 44.75 45.0
  * latitude   (latitude) float32 55.0 54.75 54.5 54.25 ... 25.5 25.25 25.0
  * time       (time) datetime64[ns] 1979-01-01 ... 1979-12-31T23:00:00
Data variables:
    u10        (time,latitude,longitude) float32 ...
    v10        (time,longitude) float32 ...
    msl        (time,longitude) float32 ...
Attributes:
    Conventions:  CF-1.6
    history:      2020-11-24 08:15:21 GMT by grib_to_netcdf-2.16.0: /opt/ecmw...
    

使用 nc.to_dataframe(),我能够打印出“更好看”的数据格式,如下所示:

enter image description here

从这里开始,我想打印出 9 月份的 u10(以及后来的 v10)值,意思是从 1979-01-01 00:00:001979-10-01 00:00:00nc 的索引是一个

MultiIndex([(55.0,-20.0,'1979-01-01 00:00:00'),... names=['latitude','longitude','time'],length=276649560)

我不确定 MultiIndex 部分是否有帮助。任何方向正确的帮助或提示都会非常感激,过去三天我一直在坚持这一点。

解决方法

欢迎使用堆栈溢出。这是关于 how to ask a question.

的指南

我建议先学习 xarray 的基础知识。他们有一些关于如何开始的写得很好的examples。对于您的情况,请查看 how to select data.

上的这些示例

就你而言

t1 = '1979-01-01 00:00:00'
t2 = '1979-10-01 00:00:00'
## select data from t1 till t2
a = nc.u10.sel(time=slice(t1,t2))
print(a)