Как декодировать переменную времени при использовании xarray для загрузки файла NETCDF - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть файл netcdf, в котором указаны месячные значения осадков за период с 1948 по 2008 год. Переменная времени имеет следующий формат:

float time(time) ;
        time:units = "months since 1948-01-01 00:00:00" ;
        time:time_origin = "01-JAN-1948:00:00:00" ;

Когда я пытаюсь использовать Xarray, чтобы открыть набор данных, используя следующую команду

ds=xr.open_dataset("C:/Users/vsri/Downloads/prcp_monthly_1948-2008.nc")

Я получаю следующую ошибку

ValueError: unable to decode time units 'months since 1948-01-01 00:00:00' with the default calendar. Try opening your dataset with decode_times=False.

Если я использую аргумент decode_Times = False, переменной времени присваивается значение с плавающей запятой (как показано ниже)

 Coordinates:
      * longitude  (longitude) float32 0.25 0.75 1.25 1.75 ... 358.75 359.25 359.75
      * latitude   (latitude) float32 -89.75 -89.25 -88.75 ... 88.75 89.25 89.75
      * z       (z) float32 0.0
      * time (time) float32 0.0 1.0 2.0 3.0 4.0 ... 728.0 729.0 730.0 731.0

Я не хочу использовать decode_Times = False, потому что я больше не могу использовать функцию повторной выборки xarray для набора данных.

Может кто-нибудь подсказать мне, как убедиться, что xarray читает набор данных с правильной отметкой времени, а не с плавающей запятой?

1 Ответ

1 голос
/ 15 апреля 2019

Спасибо за обновление в вашем комментарии.В вашем случае, поскольку ваши данные имеют регулярную частоту, я рекомендую обойти это, создав собственную координату времени с pandas.date_range:

import pandas as pd
import xarray as xr

ds = xr.open_dataset("C:/Users/vsri/Downloads/prcp_monthly_1948-2008.nc",
        decode_times=False)
units, reference_date = ds.time.attrs['units'].split('since')
ds['time'] = pd.date_range(start=reference_date, periods=ds.sizes['time'], freq='MS')

. Это создаст массив датза первое число каждого месяца, начиная с 1948-01-01 и заканчивая соответствующим числом месяцев спустя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...