'InvalidIndexError' при объединении файлов netCDF в виде набора данных с использованием python xarray - PullRequest
0 голосов
/ 09 мая 2019

Я хочу объединить 50 файлов netCDF в моем каталоге, используя python xarray 'open_mfdataset'. Он работает с небольшим выбором файлов netCDF, но не при объединении всех 50. Я получаю эту ошибку при вызове функции из «toolbox.py» в сценарии «demo.py»:

Файл "", строка 1, в runfile ('data_dir / demo.py', wdir = '')

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / spyder_kernels / настроить / spydercustomize.py", строка 827, в runfile execfile (имя файла, пространство имен)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / spyder_kernels / настроить / spydercustomize.py", строка 110, в execfile exec (compile (f.read (), filename, 'exec'), пространство имен)

Файл "data_dir / demo.py", строка 15, в data_files = concat (data_dir, chunks, file_name)

Файл "Python / toolbox.py", строка 53, в CONCAT data_vars = 'минимальные', параллельные = False) .chunk (чанки)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / бэкэнды / api.py", строка 719, в open_mfdataset Идентификаторы = идентификаторы)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ combine.py", строка 553, в _auto_combine data_vars = data_vars, координаты = координаты)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ combine.py", строка 475 в _combine_nd Compat = Compat)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ combine.py", строка 493, в _auto_combine_all_along_first_dim data_vars, ords)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ combine.py", строка 514, в _auto_combine_1d объединено = объединить (объединено, compat = compat)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ merge.py", строка 532, в слиянии переменные, имя_ координаты, dims = merge_core (dict_like_objects, compat, join)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ merge.py", строка 445, в merge_core выровненный = deep_align (принудительный, соединение = соединение, копирование = ложь, индексы = индексы)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ alignment.py", строка 217, в deep_align исключить = исключить)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / xarray / ядро ​​/ alignment.py", линия 133, на одной линии index = Joiner (Match_indexes)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / панды / ядро ​​/ индексы / base.py", строка 2223, в или вернуть self.union (прочее)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / панды / ядро ​​/ индексы / datetimes.py", линия 493, в союзе результат = Index.union (это, другое)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / панды / ядро ​​/ индексы / base.py", линия 2332, в союзе indexer = self.get_indexer (прочее)

Файл "Anaconda3 / Библиотека / python3.6 / сайт-пакеты / панды / ядро ​​/ индексы / base.py", строка 2740, в get_indexer поднять InvalidIndexError («Переиндексация действительна только с уникальным»

InvalidIndexError: Переиндексация действительна только для однозначных индексов объекты

Я попытался просмотреть отдельные файлы netCDF и попробовал различные варианты файлов netCDF для объединения. Я думаю, что это может быть потому, что есть несколько объектов индекса, которые одинаковы? но я не совсем понимаю.

def concat(data_dir,chunks,file_name):
    # data_dir = directory where IMOS glider .nc files exist
    # chunks = output variable 'chunks' from function 'find_chunks' - this is a single value
    # file_name = specify string for name of file (not including extension e.g. '.zarr')

    # concatenate IMOS glider netCDF files in data_dir
    data_files = xr.open_mfdataset(data_dir + '*.nc', concat_dim='TIME',data_vars='minimal',parallel=False).chunk(chunks)
    print('Data concatenated..')

    # I then save the concatenated dataset as a netCDF and .zarr. This only works for smaller slections of netCDF files.

    return data_files

Ожидается объединенный набор данных, который я могу вернуть из функции и сохранить в виде файлов netCDF и .zarr.

...