use*_*813 5 python time pandas
我想在 pandas 中使用滚动时间窗口作为前瞻性窗口。我该怎么做呢?
import pandas as pd
data = pd.DataFrame({'t': ['2017-02-02 15:00:01',
'2017-02-02 15:00:02',
'2017-02-02 15:01:00',
'2017-02-02 15:03:05',
'2017-02-02 15:08:00'],
'value': [1, 2, 3, 14, 5]})
data['t'] = data['t'].apply(pd.to_datetime)
data = data.set_index('t')
backward_max = data.rolling('300s').max() # yields [1, 2, 3, 14, 14]
forward_max = '???' # should yield [14, 14, 14, 14, 5]
Run Code Online (Sandbox Code Playgroud)
问题是,由于观察之间的时间差不相等,我不能简单地从向后观察的窗口中移动结果。
我可以计算以相反顺序运行的假时间戳并使用向后的时间窗口,正如可以从这里导出的那样,但我几乎可以肯定有一种更优雅的方法。
编辑:将所有时间戳更改为同一天,并提供以下解决方法代码,尽管它并不优雅。
data2 = data.reset_index()
data2['t2'] = max(data2['t']) - (data2['t'] - min(data2['t']))
data2 = data2.set_index('t2').sort_index()
forward_max = np.flip(data2.rolling('300s')['value'].max().values, axis=0)
Run Code Online (Sandbox Code Playgroud)
luo*_*o23 -1
可以参考这个解决方案: Python:回头看n天滚动标准差
然而,它仍然不是一个完美的解决方案。有人在 Github 上提出了一个问题,但似乎没有人在处理它。这是链接https://github.com/pandas-dev/pandas/issues/6772
| 归档时间: |
|
| 查看次数: |
2134 次 |
| 最近记录: |