У меня есть pandas фрейм данных, называемый data, с индексами даты и времени. Когда я пытаюсь проиндексировать данные по нескольким временам, возникает ошибка. В частности, код выглядит следующим образом:
times = data.index.values
data.loc[times]
, что вызывает ошибку
"None of [DatetimeIndex([ '1997-01-10 06:53:36', '1997-01-10 06:53:36.100000',\n '1997-01-10 06:53:36.200000', '1997-01-10 06:53:36.300000',\n '1997-01-10 06:53:36.400000', '1997-01-10 06:53:36.500000',\n '1997-01-10 06:53:36.600000', '1997-01-10 06:53:36.700000',\n '1997-01-10 06:53:36.800000', '1997-01-10 06:53:36.900000',\n ...\n '1997-01-10 06:58:05', '1997-01-10 06:58:05.100000',\n '1997-01-10 06:58:05.200000', '1997-01-10 06:58:05.300000',\n '1997-01-10 06:58:05.400000', '1997-01-10 06:58:05.500000',\n '1997-01-10 06:58:05.600000', '1997-01-10 06:58:05.700000',\n '1997-01-10 06:58:05.800000', '1997-01-10 06:58:05.900000'],\n dtype='datetime64[ns]', name='Time', length=2700, freq=None)] are in the [index]"
У меня проблемы с воспроизведением этой ошибки на простом кадре данных, который я сделал сам, как этот:
df = pd.DataFrame(data={'col1':[1,2,3]} , index =[np.datetime64('1997-01-10T06:53:36.000000000'),np.datetime64('1997-01-10T06:53:36.100000000'),np.datetime64('1997-01-10T06:53:36.100000000')] )
times = df.index.values
df.loc[times]
просто возвращает фрейм данных df.
Кроме того,
times = data.index
data.loc[times]
возвращает данные кадра данных, и циклическое прохождение по времени выглядит следующим образом:
times = data.index.values
for time in times:
print(data.loc[time])
не приводит к ошибке.
ОБНОВЛЕНИЕ
Я нашел источник ошибки, время, когда я пытался индексировать, не имело информации о часовом поясе, и время в кадре данных было. Итак, это:
times = data.index.values
time_tz = pd.DatetimeIndex(times,name='Time',tz=pytz.utc)
data.loc[time_tz]
работает так, как я и ожидал.
Ошибка возникает только в том случае, если я пытаюсь индексировать по нескольким датам без времени, поэтому теперь мой вопрос: почему
times = data.index.values
for time in times:
print(data.loc[time])
не вызывает ошибку?