我正在尝试按 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
数据名声增加了 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
如果我理解正确,它应该使用带有作用域的过滤器。根据需要用变量替换第 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))]