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)