Maneira mais rápida de transformar grupo com valor médio em Pandas

Eu tenho um quadro de dados do Pandas em que estou tentando substituir os valores em cada grupo pela média do grupo. Na minha máquina, a linhadf["signal"].groupby(g).transform(np.mean) leva cerca de 10 segundos para executar comN eN_TRANSITIONS defina para os números abaixo.

Existe alguma maneira mais rápida de alcançar o mesmo 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

questionAnswers(2)

yourAnswerToTheQuestion