Я пытаюсь отфильтровать фрейм данных по окну 2 месяца. У меня есть датафрейм 4 месяца.
Пример фрейма данных:
Index val Datetime
2017-11-01 14:30:00 536.04 2017-11-01 14:30:00
2017-11-01 15:00:00 533.04 2017-11-01 15:00:00
... ... ...
2017-12-31 10:00:00 145.02 2017-12-31 10:00:00
2017-12-31 10:30:00 145.92 2017-12-31 10:30:00
Я пробовал это:
df2[df2['Datetime'] < df2['Datetime'].min() + dateutil.relativedelta.relativedelta(months = 2) + Timedelta('%sD' %x)]
выход:
2017-11-01 14:30:00 536.04 2017-11-01 14:30:00
2017-11-01 15:00:00 533.04 2017-11-01 15:00:00
... ... ...
2017-12-31 10:00:00 145.02 2017-12-31 10:00:00
2017-12-31 10:30:00 145.92 2017-12-31 10:30:00
2017-11-01 14:30:00 536.04 2017-11-01 14:30:00
2017-11-01 15:00:00 533.04 2017-11-01 15:00:00
... ... ...
2018-01-01 10:00:00 145.62 2018-01-01 10:00:00
2018-01-01 10:30:00 151.50 2018-01-01 10:30:00
Datafame увеличивается на 1 день, но день начала фиксирован.
Я хочу сдвигать фреймворк на 2 месяца с каждым увеличивающимся днем.
ожидаемый результат:
2017-11-01 14:30:00 536.04 2017-11-01 14:30:00
2017-11-01 15:00:00 533.04 2017-11-01 15:00:00
... ... ...
2017-12-31 10:00:00 145.02 2017-12-31 10:00:00
2017-12-31 10:30:00 145.92 2017-12-31 10:30:00
2017-11-02 14:30:00 536.04 2017-11-02 14:30:00
2017-11-02 15:00:00 533.04 2017-11-02 15:00:00
... ... ...
2018-01-01 10:00:00 145.62 2018-01-01 10:00:00
2018-01-01 10:30:00 151.50 2018-01-01 10:30:00
@jezrael, добавил.
@jezrael, что-нибудь возможно?
Не уверен, что понимаю вас.
Я хочу перебирать фрейм данных и фильтровать данные за 2 месяца каждый раз, когда изменяется дата.
Итак, вывод - это список DataFrames? Какой ожидается результат с образцом df = pd.DataFrame({'a': range(10)}, index=pd.date_range('2017-04-03', periods=10, freq='20D'))? (При необходимости меняйте его.)
@jezrael, вы можете взглянуть на это? stackoverflow.com/questions/50985139/…
извините, я в отпуске, так что только по телефону.






Если я правильно понимаю, он должен использовать фильтр с областью действия (при необходимости замените дни '12' переменными):
import dateutil
from datetime import datetime,date,timedelta
df2[(df2['Datetime'] > df2['Datetime'].min() + timedelta(days=12)) & (df2['Datetime'] < df2['Datetime'].min() + timedelta(days=2) + dateutil.relativedelta.relativedelta(months=2))]
Можете ли вы добавить образец данных с ожидаемым результатом?