Pandas - рассчитать скользящее среднее по группе, исключая текущий ряд - PullRequest
0 голосов
/ 11 февраля 2019

Например:

data = {'Platoon': ['A','A','A','A','A','A','B','B','B','B','B','C','C','C','C','C'],
        'Date' : [1,2,3,4,5,6,1,2,3,4,5,1,2,3,4,5],
       'Casualties': [1,4,5,7,5,5,6,1,4,5,6,7,4,6,4,6]}
df = pd.DataFrame(data)

Это работает для расчета скользящего среднего, включая текущую строку:

df['avg'] = df.groupby(['Platoon'])['Casualties'].transform(lambda x: x.rolling(2, 1).mean())

, что дает:

Platoon   Date Casualties Avg  
        A   1   1         1.0
        A   2   4         2.5
        A   3   5         4.5
        A   4   7         6.0
        ......

Я хочу получить:

Platoon   Date Casualties Avg  
        A   1   1         1.0
        A   2   4         1.0
        A   3   5         2.5
        A   4   7         4.5
        ......

Я подозреваю, что могу использовать сдвиг здесь, но я не могу понять это!

1 Ответ

0 голосов
/ 11 февраля 2019

Вам нужно shift с bfill

df.groupby(['Platoon'])['Casualties'].apply(lambda x: x.rolling(2, 1).mean().shift().bfill())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...