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é.