Как добавить измерения агрегации в файл netcdf4 с помощью библиотеки Python Xarray?

Я создаю файл netcdf на основе данных из кадра данных pandas с помощью xarray. Данные являются одномерными, и в качестве измерения используется только время. Затем программное обеспечение, для которого я использую этот файл, использует MFdataset() из библиотеки netcdf4 для открытия и загрузки данных. Каждый раз, когда я создаю файл netcdf (например, с именем test3.nc), используя любой движок или формат, доступный с функцией to_netcdf(), я получаю сообщение об ошибке OSError: master dataset test3.nc does not have a aggregation dimension при открытии его с помощью MFDataset('test3.nc')

import pandas as pd
import xarray as xr
from netcdf4 import MFDataset

# create a dataframe
df = pd.Dataframe()
# [logic to add data with one column as time]

# convert dataframe to Dataset
fo = xr.Dataset.from_dataframe(df.set_index('time'))

# add variable attributes here

# convert xarray Dataset to a netcdf file:
fo.to_netcdf('test3.nc', mode='w',format='NETCDF4_CLASSIC')

MFDataset('test3.nc')

Затем в консоли появляется следующая ошибка, несмотря на то, что время является измерением:

MFDataset('test3.nc')
Traceback (most recent call last):
  File "/home/arcticsnow/anaconda3/envs/dataAna/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-26-94430718f30a>", line 1, in <module>
    MFDataset('test3.nc')
  File "netCDF4/_netCDF4.pyx", line 5917, in netCDF4._netCDF4.MFDataset.__init__
OSError: master dataset test3.nc does not have a aggregation dimension

person Simon    schedule 17.02.2019    source источник
comment
Сам нашел решение. Смотри ниже   -  person Simon    schedule 17.02.2019


Ответы (1)


Ответ заключается в использовании следующего аргумента в функции to_netcdf():

fo.to_netcdf('test.nc',  unlimited_dims={'time':True}, format='NETCDF4_CLASSIC')
person Simon    schedule 17.02.2019