Foward Rolling Window самоопределенная функция Python - PullRequest
0 голосов
/ 17 декабря 2018

У меня фрейм данных в Python 3 выглядит так, у него есть метка времени в своем индексе.Я хочу провести скользящее окно вперед на 10 секунд.

enter image description here

 df = pd.DataFrame({'A': [25,4,2,33,44,88,51,29,18,42]})
 df.index = [pd.Timestamp('20130101 09:00:01'),
         pd.Timestamp('20130101 09:00:02'),
         pd.Timestamp('20130101 09:00:03'),
         pd.Timestamp('20130101 09:00:05'),
         pd.Timestamp('20130101 09:00:06'),
         pd.Timestamp('20130101 09:00:10'),
         pd.Timestamp('20130101 09:00:17'),
         pd.Timestamp('20130101 09:00:22'),
         pd.Timestamp('20130101 09:00:45'),
         pd.Timestamp('20130101 09:00:53')]  

Для каждого наблюдения я хочу найти наблюдения в течение следующих 10 секунди выполнить предварительный анализ с помощью определенной пользователем функции.Мои функции таковы:

def logsum(data):
    series = pd.Series(data)
    return 2*(np.log(data.max()) + np.log(data.min()))

В основном найдите ряд и вычислите сумму максимальных и минимальных значений журнала.

Я пытаюсь повернуть вспять ряд, затем выполнить нормальный прокатОкно анализа, теперь у него есть две проблемы.1. он не может выполнять мою функцию logsum;2. ряд должен быть монотонным: «ValueError: индекс должен быть монотонным»

мой текущий код:

df['B-roll'] = df[::-1].rolling('10s').A.logsum()  

Вот ожидаемый результат:

enter image description here

   df = pd.DataFrame({'A': [25,4,2,33,44,88,51,29,18,42], 'B-roll':   [4.49,4.49,4.49,6.92,7.17,7.3,6.33,5.84,5.75,6.49]})
   df.index = [pd.Timestamp('20130101 09:00:01'),
         pd.Timestamp('20130101 09:00:02'),
         pd.Timestamp('20130101 09:00:03'),
         pd.Timestamp('20130101 09:00:05'),
         pd.Timestamp('20130101 09:00:06'),
         pd.Timestamp('20130101 09:00:10'),
         pd.Timestamp('20130101 09:00:17'),
         pd.Timestamp('20130101 09:00:22'),
         pd.Timestamp('20130101 09:00:45'),
         pd.Timestamp('20130101 09:00:53')]  

Например, df ['B-roll'] [0] равно 4,49.В течение следующих 10 секунд максимальное значение «A» равно 88, минимальное значение «A» равно 2. Таким образом, функция logsum находит = 2 * (LOG (88) + LOG (2)) = 4,49.

Остальное следует, большое спасибо.

...