Ошибка преобразования даты и времени в файле netCDF4

#python #datetime #netcdf4

#python #datetime #netcdf4

Вопрос:

Я использовал модуль xarray для открытия данных netCDF4 и matplotlib.plt для визуализации данных.

Вот код:

 data = xr.open_dataset('path_to_file/file.nc')
l_lat_band = -75
u_lat_band = -70
idxs = np.where((no_nan_lats >= l_lat_band) amp; (no_nan_lats <= u_lat_band))
xvals = data['time'].values
indxd_data = xvals[idxs[0]]
print(indxd_data[0])
test = nc.date2num(indxd_data[0], units="days since 1899-12-30 00:00:00")
  

Строка индексирования и numpy отлично работает для других файлов данных того же типа.

Однако, когда я добираюсь до этой записи данных:

 1996-10-31T23:21:04.999991808
  

Преобразование с даты 2 прерывается.

Файл NetCDF выдает единицы измерения как «дни с 1899-12-30 00:00:00»

Есть идеи?

Вот скриншот ошибки: введите описание изображения здесь

Комментарии:

1. С тех пор я решил свою первоначальную ошибку; похоже, что у меня были некоторые значения nan в моем исходном файле данных, но я не думаю, что это объясняет, почему приведенный выше ввод данных не может подвергнуться преобразованию даты и времени. Любые идеи приветствуются.

2. Что вы подразумеваете под «прерыванием преобразования»? Вы получаете ошибку? Результат неверный?

3. Теперь я добавил скриншот конкретной ошибки для моего кода выше.

4. хорошо, спасибо за обновление; из ошибки я предполагаю, что dtype of indxd_data ‘<M8 [ns]’ (numpy datetime) — что вы могли бы попробовать, так это преобразовать в родное Python datetime, например, через dt = [datetime.fromtimestamp(ts, tz=timezone.utc) for ts in indxd_data.astype(datetime)/1e9] с импортом from datetime import datetime, timezone . После этого date2num должен работать с dt в качестве входных данных.