Выделите строки в кадре данных панд между датами независимо от года - PullRequest
4 голосов
/ 26 сентября 2019

У меня есть фрейм данных pandas с индексом datetime.Для простоты, скажем, мои данные идут с 1 сентября 2016 года по 1 сентября 2019 года, причем каждая строка соответствует определенному дню.

Я бы хотел выбрать все строки, где дата находится между 15 ноября и 15 марта, независимо от года.Для моего примера набора данных это будет: 15 ноября 2016 г. - 15 марта 2017 г., 15 ноября 2017 г. - 15 марта 2018 г. и 15 ноября 2018 г. - 15 марта 2019 г.

Это очень простовыберите строки между двумя датами (когда известен год), но я не могу придумать простой способ сделать это, когда нам нет дела до года.В идеале я хотел бы установить это так, чтобы я мог легко изменить даты начала и окончания своего диапазона (вместо того, чтобы начинать с 15 ноября, я мог бы начать с 21 ноября и т. Д.).

Заранее спасибо за помощь!

1 Ответ

3 голосов
/ 26 сентября 2019

Вот что я бы сделал:

df = pd.DataFrame({'date': pd.date_range('2016-09-01','2019-09-01', freq='D')})

# dummy variable for filter
s = df['date'].dt.month * 100 + df['date'].dt.day

# filter out the day between 3/16 and 11/14:
df[~s.between(316,1114)].head()

Вывод:

         date
75 2016-11-15
76 2016-11-16
77 2016-11-17
78 2016-11-18
79 2016-11-19
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...