#pandas #datetime #.loc
Вопрос:
Я не понимаю, почему я получаю здесь ошибку ключа. Это удается в течение одного дня, но не в другой. Я уже выполнял такого рода фильтрацию по индексу даты и времени раньше, и у меня не было этой проблемы.
temp
start time CA end time CA
0 2021-09-20 19:00:00 2021-09-20 19:30:00
1 2021-09-19 16:30:00 2021-09-19 17:00:00
2 2021-09-19 16:30:00 2021-09-19 17:00:00
3 2021-09-17 10:30:00 2021-09-17 10:45:00
4 2021-09-17 10:30:00 2021-09-17 10:45:00
5 2021-09-17 10:30:00 2021-09-17 10:45:00
6 2021-09-17 10:30:00 2021-09-17 10:45:00
7 2021-09-17 10:30:00 2021-09-17 10:45:00
8 2021-09-17 10:30:00 2021-09-17 10:45:00
temp.dtypes
start time CA datetime64[ns]
end time CA datetime64[ns]
dtype: object
temp.set_index('start time CA', inplace=True)
temp.loc['2021-09-19']
end time CA
start time CA
2021-09-19 16:30:00 2021-09-19 17:00:00
2021-09-19 16:30:00 2021-09-19 17:00:00
temp.loc[‘2021-09-20’]
KeyError: 'the label [2021-09-20] is not in the [index]'
Ответ №1:
Вам необходимо создать тип даты и pandas.to_datetime
времени столбца/индекса, используя функции даты и времени pandas:
temp['start time CA'] = pd.to_datetime(temp['start time CA'])
temp = temp.set_index('start time CA')
temp.loc['2021-09-19']
выход:
end time CA
start time CA
2021-09-19 16:30:00 2021-09-19 17:00:00
2021-09-19 16:30:00 2021-09-19 17:00:00
вывод для temp.loc['2021-09-20']
:
end time CA
start time CA
2021-09-20 19:00:00 2021-09-20 19:30:00
Комментарии:
1. Моя колонка-дата и время. Я показал выходные данные temp.dtypes. Проблема в том, что .loc успешно выполняется для одной даты, а не для другой.
2. @RuthSmith оба работают на меня, какую версию pandas вы используете?
3. Определенно более старая версия (0.20.3). Я работаю на удаленной машине, где я не настраивал среду. Я посмотрю, смогу ли я его обновить.