, поэтому мой фрейм данных выглядит следующим образом:
| Name | Type | Class | Amount |
|------|------|---------|--------|
| Abel | A | Chinese | 2 |
| Abel | B | English | 5 |
| Abel | C | Science | -1 |
| Abel | D | Physics | -10 |
| Cain | C | Chinese | -5 |
| Cain | B | Science | 0 |
| Cain | A | English | 30 |
| Cain | D | Chinese | 2 |
|------|------|---------|--------|
пример данных:
data = {'Name': ['Abel', 'Abel', 'Abel', 'Abel', 'Cain', 'Cain', 'Cain', 'Cain'],
'Type': ['A', 'B', 'C', 'D', 'C', 'B', 'A', 'D'],
'Class': ['Chinese', 'English', 'Science', 'Physics', 'Chinese', 'Science', 'English', 'Chinese'],
'Amount': [2,5,-1,-10,-5,0,30,2]}
Я пытаюсь найти для каждого имени тип n и top nкласс, основанный на количестве.
Я попробовал df.groupby (["Name", "Type"]). sum (), который дает мне группировки, но как я могу выбрать топ-5, чтобы я мог транспонироватьих в 5 разных столбцах?
Например, конечный результат для верхних 3 типов должен быть примерно таким, верхние 3 класса просто похожи, за исключением того, что столбцы от класса 1 до класса 3:
| Name | Type 1 | Type 2 | Type 3 |
|------|--------|--------|--------|
| Abel | B | A | C |
| Cain | A | D | B |
Я пробовал sort_values и затем .head (5), но каким-то образом сортировка обрабатывает отрицательные числа как самые большие.Кроме того, результаты также выпадают из группировки.Любая помощь, пожалуйста?Спасибо!