Поиск индекса даты в объекте DateTime python

У меня есть список, содержащий даты, которые я создал с помощью:

dates_list = pd.date_range(startdate, num_of_periods, freq = 'MS')

^ сохранил диапазон дат в dates_list

Это вернет мой ежемесячный список дат правильно, если я напечатаю (date_list).

Я пытаюсь найти порядковый номер с определенной датой в диапазоне. Я пытался:

dates_list.index(call_date)

^^ где call_date - это дата, когда я пытаюсь найти порядковый номер

и я получаю сообщение об ошибке:

TypeError: 'DatetimeIndex' object is not callable

Если я попробую эту же команду в более простом списке, например: simple_list = ['cheese', 'banana', 'mushroom', 'apple' ...]simple_list.index('banana') возвращает 1.

Как мне получить значение индекса из списка дат? Есть ли что-то, что мне нужно сделать по-другому?

Любая обратная связь будет оценена. Спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
2 921
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть объект DatetimeIndex, а не список. В этом можно убедиться, распечатав type(dates_list). У объектов DatetimeIndex нет метода index.

Вы можете вручную получить индекс следующим образом:

dates_list = pd.date_range(start=pd.Timestamp('now').normalize(), periods=10, freq='D')

print(dates_list)

# DatetimeIndex(['2018-05-02', '2018-05-03', '2018-05-04', '2018-05-05',
#                '2018-05-06', '2018-05-07', '2018-05-08', '2018-05-09',
#                '2018-05-10', '2018-05-11'],
#               dtype='datetime64[ns]', freq='D')

res = (dates_list == pd.Timestamp('2018-05-04')).argmax()

# 2

Как вариант, вы можете использовать генератор. Этот метод рекомендуется только для больших диапазонов, когда вы считаете, что требуемая дата приближается к началу вашего DatetimeIndex.

x = pd.Timestamp('2018-05-04')
res = next((i for i, j in enumerate(dates_list) if j == x), None)

Другие вопросы по теме