Python Скользящее среднее значение строки Dataframe - PullRequest
0 голосов
/ 30 апреля 2019

Так что в основном мне просто нужен совет о том, как рассчитать скользящее среднее значение за 24 месяца для каждой строки информационного кадра. В каждой строке указан определенный город, а в столбцах указаны соответствующие продажи за этот месяц. Если бы кто-нибудь мог помочь мне понять это, это было бы очень ценно

Редактировать: Я не смог правильно объяснить себя. Я знаю, что в pandas встроен скользящий метод. Проблема в том, что я не хочу брать скользящее среднее столбца в единственном числе, я хочу взять его из столбцов подряд.

Пример набора данных

Состояние - M1 - M2 - M3 - M4 - ..... - M48

UT - 40 - 20 - 30 - 60 -..... 60

CA - 30 - 60 - 20 - 40 -..... 70

Итак, я хочу найти скользящее среднее для каждого штата за последние 24 месяца (столбцы M24-M48)

Что я пробовал:

Data['24_Month_Moving_Average'] = Data.rolling(window=24, win_type='triang', min_periods=1, axis=1).mean()

ошибка: неправильно пройдено 139 пунктов, размещение подразумевает 1

edit 2, Образец набора данных:

Data = pd.Dataframe({'M1':[1, 2], 'M2':[3,5], 'M3':[5,6]}, index = ['UT', 'CA'])

# need code that will add column that is the rolling 24 month average for each state

Изображение кадра данных

1 Ответ

0 голосов
/ 30 апреля 2019

Вы можете использовать функции rolling() с mean() и указать нужные параметры window, min_periods следующим образом:

df.col1.rolling(n, win_type='triang', min_periods=1).mean()

Не знаю, какой будет ожидаемая выручка, но перечисление образца для показа с помощью apply () для каждой строки генерирует переход, сделайте столбец state индексом для вашего фрейма данных, надеюсь, это поможет:

import pandas as pd

df = pd.DataFrame({'B': [6, 1, 2, 20, 4],'C': [1, 1, 2, 30, 4],'D': [10, 1, 2, 5, 4]})

def test_roll(data):
    return(data.rolling(window=2, win_type='triang', min_periods=1, axis=0).mean())


print(df.apply(test_roll, axis=1))

pandas.DataFrame.rolling

...