Скользящее среднее значение кадра данных панд с несколькими идентификаторами - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть фрейм данных pandas, на котором я рассчитываю скользящее среднее по нескольким идентификаторам.

df:
╔════╦═══════╗
║ id ║ value ║
╠════╬═══════╣
║  1 ║     2 ║
║  1 ║     5 ║
║  1 ║     1 ║
║  2 ║     4 ║
║  2 ║     1 ║
║  2 ║     5 ║
║  2 ║     3 ║
║  3 ║     6 ║
║  3 ║     5 ║
╚════╩═══════╝

Current Resulting df:
╔════╦═══════╦═════════╗
║ id ║ value ║ average ║
╠════╬═══════╬═════════╣
║  1 ║     2 ║         ║
║  1 ║     5 ║ 3.5     ║
║  1 ║     1 ║ 3       ║
║  2 ║     4 ║ 2.5     ║
║  2 ║     1 ║ 2.5     ║
║  2 ║     5 ║ 3       ║
║  2 ║     3 ║ 4       ║
║  3 ║     6 ║ 4.5     ║
║  3 ║     5 ║ 5.5     ║
╚════╩═══════╩═════════╝

Expected Resulting df:
╔════╦═══════╦═════════╗
║ id ║ value ║ average ║
╠════╬═══════╬═════════╣
║  1 ║     2 ║         ║
║  1 ║     5 ║ 3.5     ║
║  1 ║     1 ║ 3       ║
║  2 ║     4 ║         ║
║  2 ║     1 ║ 2.5     ║
║  2 ║     5 ║ 3       ║
║  2 ║     3 ║ 4       ║
║  3 ║     6 ║         ║
║  3 ║     5 ║ 5.5     ║
╚════╩═══════╩═════════╝

Прямо сейчас мой код не учитывает изменение идентификатора, поэтому он по-прежнему будет принимать среднее значение из последних двух значений. Есть ли в любом случае принять во внимание изменение в id. Мой текущий код df['value'] = df['value'].df(window = 2, min_periods = 1).mean()

Любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 10 ноября 2018

concat и groupby

pd.concat([d.rolling(2).mean() for _, d in df.groupby('id')])

    id  value
0  NaN    NaN
1  1.0    3.5
2  1.0    3.0
3  NaN    NaN
4  2.0    2.5
5  2.0    3.0
6  2.0    4.0
7  NaN    NaN
8  3.0    5.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...