Более быстрый способ преобразовать группу со средним значением в Pandas

У меня есть фрейм данных Pandas, где я пытаюсь заменить значения в каждой группе на среднее значение группы. На моей машине линияdf["signal"].groupby(g).transform(np.mean) занимает около 10 секунд, чтобы бежать сN а такжеN_TRANSITIONS установите на номера ниже.

Есть ли более быстрый способ достичь того же результата?

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

Ответы на вопрос(2)

Ваш ответ на вопрос