Файл xarray и netCDF с пустыми переменными и фреймом данных 0-мерного объекта - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь преобразовать некоторые файлы .nc в pandas фреймы данных, используя xarray.

Вот один из файлов netCDF:

ftp: // l5ftl01.larc.nasa.gov / MISR / MIL2ASAE.003 / 2017.08.31 / MISR_AM1_AS_AEROSOL_P006_O094165_F13_0023.nc

И код:

import xarray as xr
ds = xr.open_dataset("MISR_AM1_AS_AEROSOL_P006_O094165_F13_0023.nc")
df = ds.to_dataframe()

И ошибка:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\abreucbr\AppData\Local\Continuum\anaconda3\envs\py36\lib\site-packages\xarray\core\
dataset.py", line 3088, in to_dataframe
    return self._to_dataframe(self.dims)
  File "C:\Users\abreucbr\AppData\Local\Continuum\anaconda3\envs\py36\lib\site-packages\xarray\core\
dataset.py", line 3078, in _to_dataframe
    index = self.coords.to_index(ordered_dims)
  File "C:\Users\abreucbr\AppData\Local\Continuum\anaconda3\envs\py36\lib\site-packages\xarray\core\
coordinates.py", line 80, in to_index
    raise ValueError('no valid index for a 0-dimensional object')
ValueError: no valid index for a 0-dimensional object

Если я проверяю переменную ds, например,

ds.variables

, я получаю

Frozen(OrderedDict())

Файл .nc имеет несколько МБ, поэтому он некажется "пустым".

В чем здесь проблема?

Ответы [ 2 ]

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

Вы можете проверить nc-файл с помощью набора данных netcdf4.Это дает вам представление о полной структуре, включая группы.

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

Кажется, ваш набор данных настроен с иерархией групп .Функция Xarray open_dataset поддерживает открытие только одной группы за раз.Поэтому вам нужно открывать только одну группу за раз.Примерно так:

xr.open_dataset("MISR_AM1_AS_AEROSOL_P006_O094165_F13_0023.nc", group='4.4_KM_PRODUCTS')

Вообще говоря, метод to_dataframe будет иметь ограниченную полезность для вашего набора данных, так как объединение 6 измерений в один индекс будет довольно неуклюжим / неэффективным.

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