#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
ofindxd_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
в качестве входных данных.