У меня есть фрейм данных, как показано ниже, мне нужно написать функцию, которая должна дать мне следующие результаты:
Входные параметры:
- Страна, например
'INDIA'
- Возраст, например
'Student'
Мой входной фрейм данных выглядит так:
Card Name Country Age Code Amount
0 AAA INDIA Young House 100
1 AAA Australia Old Hardware 200
2 AAA INDIA Student House 300
3 AAA US Young Hardware 600
4 AAA INDIA Student Electricity 200
5 BBB Australia Young Electricity 100
6 BBB INDIA Student Electricity 200
7 BBB Australia Young House 450
8 BBB INDIA Old House 150
9 CCC Australia Old Hardware 200
10 CCC Australia Young House 350
11 CCC INDIA Old Electricity 400
12 CCC US Young House 200
Ожидаемый результат будет
Code Total Amount Frequency Average
0 Electricity 400 2 200
1 House 300 1 300
10 лучших (в нашем случае, мы можем получить только 2 лучших кода) для данной страны (= Индия) и возраста (= студент) на основе общей суммы суммы.Кроме того, он также должен дать новый столбец «Частота», который будет считать число.записей в этой группе и столбце «Среднее» будет общая сумма / частота
, которую я пробовал
df.groupby(['Country','Age','Code']).agg({'Amount': sum})['Amount'].groupby(level=0, group_keys=False).nlargest(10)
, что дает
Country Age Code
Australia Young House 800
Old Hardware 400
Young Electricity 100
INDIA Old Electricity 400
Student Electricity 400
House 300
Old House 150
Young House 100
US Young Hardware 600
House 200
Name: Amount, dtype: int64
, что, к сожалению, отличаетсяот ожидаемого выхода.