def weighed_average(grp):
    return grp._get_numeric_data().multiply(grp['COUNT'], axis=0).sum() / grp[
        'COUNT'].sum()
df.groupby('SOME_COL').apply(weighed_average)
Агрегатная функция Pandas DataFrame с использованием нескольких столбцов