Создание признака в pd.DataFrame() сгруппированного по UserID

Имеется набор данных, запись кликов пользователей. В строке записаны ID пользователя, и некоторый количественный признак, например, время сессии. Также написана функция, которая выводит для массива numpy гибридный массив - накопительное среднее + плавающее среднее, того же размера:

def moving_average_mit_anfang(x, w):
        # Первая часть - усредненный профиль по чтениям
        first_part_result = np.cumsum(x)/np.cumsum(np.ones(len(x)))
        # Если активность пользователя превышает размер скользящего окна, то посчитаем его
        if len(x)>w:
            # Вторая часть - плавающее среднее шириной w
            sec_part_result = np.convolve(x, np.ones(w), 'valid') / w
            return np.append(first_part_result[:len(x)-(w+1)],sec_part_result)
        # Если активность пользователя меньше скользящего окна, то выводим накопительное среднее
        else:
            return first_part_result

Нужно применить эту функцию к столбцу feature_1, так, чтобы каждой записи соответствовало текущее значение среднего с учетом id пользователя и его истории на данный момент.

Модельный датафрейм:

pd.DataFrame(data={'ID':[1,2,3,2,3,1,2,1,3,3,3,2,1],
                   'Feature_1':[4,5,6,73,2,21,13,45,32,9,18,45,39]})

Ответы (0 шт):