Я применяю разные функции к каждому столбцу в объекте группового панды. Одной из этих функций является взвешенное среднее, где весами являются связанные значения в другом столбце в кадре данных. Тем не менее, для ряда моих групп веса суммируются до нуля. Из-за этого при запуске кода появляется сообщение об ошибке «Сумма весов к нулю, нормализация невозможна».
Обращаясь к приведенному ниже коду, для группы, определенной значением col1 x и значением col2 y, сумма значений в col3 в строках с col1 = x и col2 = y равна нулю, создавая ошибку в средневзвешенном значении col5.
Есть ли способ сделать так, чтобы группы, для которых веса суммировались в ноль, возвращали «средневзвешенное» значение нуля? Спасибо!
df = pd.DataFrame([['x','x','x','y','y','y'],['a','a','b','b','c','c'],
[0,0,3,4,5,6],[1,1,1,1,1,1],[0,0,4,6,2,8]],
).transpose()
df.columns = ['col1','col2','col3','col4','col5']
weighted_average = lambda x: np.average(x, weights=df.loc[x.index, 'col3'])
averages = df.groupby(['col1','col2']).agg({'col3':'sum',
'col4':'sum',
'col5': weighted_average})