Saltar al contenido

Python Pandas: calcule el promedio móvil dentro del grupo

Por fin después de mucho trabajar ya dimos con la solución de esta cuestión que agunos lectores de nuestra web presentan. Si tienes algo que compartir puedes dejar tu comentario.

Solución:

Puedes usar rodar con transform:

df['moving'] = df.groupby('object')['value'].transform(lambda x: x.rolling(10, 1).mean())

los 1 en rolling es por un número mínimo de períodos.

Puedes usar rolling en groupby objeto directamente como:

df['moving'] = df.groupby('object').rolling(10)['value'].mean()

La nueva versión de pandas arroja un error cuando se usa para asignar directamente a la columna, así que use:

df['moving'] = df.groupby('object').rolling(10)['value'].mean().reset_index(drop=True)

Es posible que las respuestas proporcionadas no produzcan los resultados deseados si está agrupando en varias columnas.

Lo siguiente debería cortarlo:

df['moving'] = df.groupby(['col_1', 'col_2', 'col_3']).rolling(10)['value'].mean().droplevel(level=[0,1,2])

Calificaciones y comentarios

Te invitamos a reafirmar nuestra ocupación poniendo un comentario y valorándolo te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *