У меня есть этот простой временной ряд
In [1]: df = pd.DataFrame({'fire': [1, 1, 1]},
...: index=pd.to_datetime([
...: '2016-03-16 23:20:10',
...: '2016-03-16 23:28:58',
...: '2016-03-16 23:38:15']))
...:
In [2]: df
Out[2]:
fire
2016-03-16 23:20:10 1
2016-03-16 23:28:58 1
2016-03-16 23:41:15 1
Я хочу уменьшить его на 1 минуту и добавить еще один столбец с именем fire_in_the_next_5_minutes .Повторная выборка выполняется легко, но я не смог найти способ ограничить обратную засыпку только 5 предыдущими строками .Ближайшие данные, которые я получаю, это:
In [3]: df = df.resample('1min').mean()
...: df['fire_in_the_next_5_minutes'] = df['fire'].fillna(method='backfill')
...:
In [4]: df
Out[4]:
fire fire_in_the_next_5_minutes
2016-03-16 23:20:00 1.0 1.0
2016-03-16 23:21:00 NaN 1.0 <-- should remain NaN
2016-03-16 23:22:00 NaN 1.0 <-- should remain NaN
2016-03-16 23:23:00 NaN 1.0
2016-03-16 23:24:00 NaN 1.0
2016-03-16 23:25:00 NaN 1.0
2016-03-16 23:26:00 NaN 1.0
2016-03-16 23:27:00 NaN 1.0
2016-03-16 23:28:00 1.0 1.0
2016-03-16 23:29:00 NaN 1.0 <-- should remain NaN
2016-03-16 23:30:00 NaN 1.0 <-- should remain NaN
2016-03-16 23:31:00 NaN 1.0 <-- should remain NaN
2016-03-16 23:32:00 NaN 1.0 <-- should remain NaN
2016-03-16 23:33:00 NaN 1.0
2016-03-16 23:34:00 NaN 1.0
2016-03-16 23:35:00 NaN 1.0
2016-03-16 23:36:00 NaN 1.0
2016-03-16 23:37:00 NaN 1.0
2016-03-16 23:38:00 1.0 1.0
Могу ли я выполнить обратную засыпку другим способом, не используя метод fillna
?