Скользящая агрегация по столбцу без времени и даты - PullRequest
0 голосов
/ 10 октября 2019

Мне было интересно, есть ли удобный способ расчета скользящего среднего, чтобы окно перемещалось вдоль некоторого столбца без даты и собирало значения из другого столбца?

В частности, я хотел бы рассчитать соотношение истинных значений в столбце «Успех». Окно должно двигаться вдоль столбца «Выручка компании», чтобы оно производило агрегирование по строкам, которые имеют «Выручка компании» + - некоторое количество текущего места окна.

Панды имеют функцию df.rolling (), ноЯ не думаю, что это предназначено для такого рода задач.

В настоящее время я думаю о создании нового фрейма данных со столбцом «Выручка компании» для значений, по которым я хочу перейти в окно. Затем я бы использовал .apply () для фильтрации данных из исходного фрейма данных, который включает строки, принадлежащие текущему окну «Доход компании», вычислял показатель «Успех» True и сохранял значение ставки в новом столбце в новом фрейме данных. Этот подход кажется довольно неуклюжим, и мне было интересно, есть ли лучшие способы для этого?

Пример того, что я хочу:

Исходный фрейм данных (заказанный доходом Компании для удобства чтения):

'Company revenue'    'Success'
              51      False
             101      True
             151      False
             201      True
             201      True
             301      False
             351      False
             501      True
             601      False

Требуемый результат с шагом окна 100 для «Дохода компании» и размером окна + - 200

'Company revenue'    'Success rate%'
               0     0.33
             100     0.6
             200     0.43
             300     0.5
             400     0.6
             500     0.25
             600     0.5
             700     0.5
             800     0
             900     NaN

Как видите, размер окна не должен беспокоить количество включенных выборок. , но о том, соответствует ли «доход Компании» текущему окну.

Я полагаю, что могу сделать так, как описано выше, но есть ли более красноречивый способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...