Мне нужно определить функцию, которая будет выполнять несколько операций над кадром данных, содержащим DatetimeIndex. Одна из этих операций - разрезать фрейм данных на основе периода или даты, переданных в качестве одного из аргументов функции.
При использовании loc в коде объекты слайса принимают разные опции. Например:
df.loc['2004']
чтобы разрезать все строки с датами в 2004
df.loc['2004-01':'2005-02']
чтобы разрезать все строки с датами в период с января 2004 года по февраль 2005 года
Я хотел бы иметь возможность использовать только один аргумент функции для создания объекта среза, который идет внутри loc []. Что-то вроде:
df.loc[period]
Где period - переменная, передаваемая функции в качестве одного из аргументов, и которая может быть определена в разных форматах для правильной интерпретации функцией.
Я пробовал:
Передача строковой переменной в loc, например, со значением, сконструированным как "\ '2004 \'" + ':' + "\ '2005 \'", но возвращает KeyError "'2002': '2010'».
Преобразование строки в объекты даты и времени с использованием pd.to_datetime. Но в результате «2004» преобразуется в метку времени («2004-01-01 00:00:00»)
Я нашел этот ответ и этот ответ быть похожим, но не конкретным для того, что мне нужно.
Я мог бы использовать два аргумента в функции для решения этой проблемы (что-то вроде start_date, end_date), но мне было интересно, есть ли способ достичь этого только с одним.