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

Я создаю файл netcdf, основанный на данных из pandas Dataframe с xarray.Данные являются одномерными с измерением только времени.Затем программа, для которой я использую этот файл, использует MFdataset () из libray 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

1 Ответ

0 голосов
/ 17 февраля 2019

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

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