在 for 循环中筛选数据帧两个月,增加 1 天



我正在尝试按 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))]

最新更新