Forma más rápida de transformar un grupo con valor medio en pandas

Tengo un marco de datos de Pandas donde estoy tratando de reemplazar los valores en cada grupo por la media del grupo. En mi maquina, la lineadf["signal"].groupby(g).transform(np.mean) tarda unos 10 segundos en ejecutarse conN yN_TRANSITIONS establecer a los números a continuación.

¿Hay alguna forma más rápida de lograr el mismo resultado?

import pandas as pd
import numpy as np
from time import time

np.random.seed(0)

N = 120000
N_TRANSITIONS = 1400

# generate groups
transition_points = np.random.permutation(np.arange(N))[:N_TRANSITIONS]
transition_points.sort()
transitions = np.zeros((N,), dtype=np.bool)
transitions[transition_points] = True
g = transitions.cumsum()

df = pd.DataFrame({ "signal" : np.random.rand(N)})

# here is my bottleneck for large N
tic = time()
result = df["signal"].groupby(g).transform(np.mean)
toc = time()
print toc - tic

Respuestas a la pregunta(2)

Su respuesta a la pregunta