У меня есть панд dataframe вроде этого:Панды GroupBy среднее абсолютное отклонение
Product Group Product ID Units Sold Revenue Rev/Unit
A 451 8 $16 $2
A 987 15 $40 $2.67
A 311 2 $5 $2.50
B 642 6 $18 $3.00
B 251 4 $28 $7.00
Я хочу, чтобы преобразовать его выглядеть следующим образом:
Product Group Units Sold Revenue Rev/Unit Mean Abs Deviation
A 25 $61 $2.44 $0.24
B 10 $46 $4.60 $2.00
Колонка Отклонение Средние Abs должны быть выполнены на столбец «Rev/Unit» в первой таблице. Трудная вещь заключается в учете соответствующих весов за расчётом Rev/Unit.
Например, если взять прямой MAD из Rev/Unit группы продуктов A, то получится 0,26 доллара США. Однако после учета веса MAD составит 0,24 доллара США.
Я знаю, как использовать groupby, чтобы получить простое суммирование для проданных единиц и доходов, но я немного потерял, как выполнить более сложные вычисления следующих двух столбцов.
Также, когда мы даем совет/помощь --- есть ли более простой способ создания/вставки таблиц в сообщения SO?
UPDATE:
Будет ли решение нравится эта работа? Я знаю, что это будет для полей суммирования, но не уверен, как реализовать для последних 2 поля.
grouped_df=df.groupby("Product Group")
grouped_df.agg({
'Units Sold':'sum',
'Revenue':'sum',
'Rev/Unit':'Revenue'/'Units Sold',
'MAD':some_function})
Есть ли способ вставить функцию в метод agg? См. Отредактированный OP для более подробной информации. – ChrisArmstrong
Вы можете использовать функцию лямбда, вызывая при необходимости полную функцию. – Mike