← retour aux snippets

pandas: rolling + groupby apply

Appliquer des fenêtres glissantes par groupe.

python pandas #pandas#rolling#groupby

objectif

Appliquer des fenêtres glissantes par groupe.

code minimal

import pandas as pd

df = pd.DataFrame({"g":["a"]*5 + ["b"]*5, "x":range(10)})
roll = df.groupby("g")["x"].rolling(3, min_periods=1).mean().reset_index(level=0, drop=True)
print(roll.round(2).tolist()[:3])

utilisation

import pandas as pd

df = pd.DataFrame({"g":["a","a","a","b","b"], "x":[1,2,3,4,5]})
out = df.groupby("g")["x"].rolling(2).sum().reset_index(level=0, drop=True)
print(out.tolist())

variante(s) utile(s)

import pandas as pd

df = pd.DataFrame({"g":["a","a","b","b","b"], "x":[1,2,3,4,5]})
print(df.groupby("g").apply(lambda d: d["x"].rolling(2).max()).dropna().tolist())

notes

  • Toujours reset_index après rolling groupé.