Пользуясь R в течение нескольких лет, я делаю решительный шаг и изучаю python, начав с редактирования некоторого существующего кода.
У меня есть переменная времени, которая была импортирована из файла netCDF следующим образом:
import netCDF4 as nc
import numpy as np
import datetime
import pandas as pd
f = nc.Dataset(fname)
time = nc.num2date(f.variables['time'][:],
f.variables['time'].units)
nc_dims = [dim for dim in f.dimensions]
Переменная времени добавляется в столбец с именем 'dates'
в кадре данных df
:
df['dates'] = time
Затем преобразуется в индекс:
df = df.set_index('dates')
Для фрейма данных определены два новых столбца, для обоих требуется, чтобы индекс имел правильный формат данных даты и времени (я думаю, ).
df['season'] = (df.index.month) % 12 + 3) // 3
df['day'] = np.floor(df.index.to_julian_date().values - 0.5)
Однако, когда код запускается в командной строке, возникают ошибки:
AttributeError: у объекта 'Index' нет атрибута 'month'; и
У объекта 'Index' нет атрибута 'to_julian_date'
Это заставляет меня думать, что объект индекса неправильно определен как объект даты и времени (следовательно, вызов месяца не не работает), и он не знает, что может преобразовать объект в юлианский формат даты. Либо так, либо мне не хватает жизненно важного пакета.
Я попытался преобразовать индекс, используя:
pd.Timestamp(time)
df = df.set_index(pd.DatetimeIndex('dates'))
df.index = pd.to_datetime(df.index)
Но получаю ошибки, указывающие, что объект индекса уже имеет формат даты и времени:
Ошибка типа: Невозможно преобразовать input [[cftime.DatetimeGregorian (2011-01-01 00: 30: 00.13) TypeError: не преобразуется в datetime TypeError: не преобразуется в datetime
Мне кажется, что мне не хватает часть головоломки, зная, что этот код работает в среде моих коллег. Любая помощь, которую может предложить любой, которая может помочь мне отладить это, очень ценится!
Редактировать:
Вот небольшой пример данных:
iveg_1 iveg_2 patchfrac_1 patchfrac_2
dates
2011-01-01 00:30:00.13 2 6 1.0 0.0
2011-01-01 01:00:00 2 6 1.0 0.0
2011-01-01 01:30:00 2 6 1.0 0.0
2011-01-01 02:00:00.13 2 6 1.0 0.0
2011-01-01 02:30:00 2 6 1.0 0.0
2011-01-01 03:00:00 2 6 1.0 0.0
2011-01-01 03:30:00.13 2 6 1.0 0.0
2011-01-01 04:00:00 2 6 1.0 0.0
2011-01-01 04:30:00 2 6 1.0 0.0
2011-01-01 05:00:00.13 2 6 1.0 0.0