Группировка по строкам в pandas?

#pandas #dataframe #group-by #pandas-groupby

#pandas #фрейм данных #группировать по #pandas-groupby

Вопрос:

Мне бы хотелось, чтобы можно было выполнять функции группировки и агрегирования, когда мои исходные данные еще не сгруппированы должным образом. Например, учитывая следующий фрейм данных:

 #Create a DataFrame
d = {
    'Name':['Alisa','Bobby','Cathrine','Alisa','Bobby','Cathrine',
            'Alisa','Bobby','Cathrine','Alisa','Bobby','Cathrine'],
'Exam':['Semester 1','Semester 1','Semester 1','Semester 1','Semester 1','Semester 1',
        'Semester 2','Semester 2','Semester 2','Semester 2','Semester 2','Semester 2'],

'Subject':['Mathematics','Mathematics','Mathematics','Science','Science','Science',
           'Mathematics','Mathematics','Mathematics','Science','Science','Science'],
'Score':[62,47,55,74,31,77,85,63,42,67,89,81]}
 

Я хотел бы иметь возможность распечатать таблицу, которая объединяет результаты по диапазонам оценок — например:

 Score        Subject        Qty
60-70        Mathematics    2
             Science        1
70-80        Mathematics    1
             Science        2
 

До сих пор я не смог разобраться в этом… Есть блестящие идеи?

Ответ №1:

Попробуйте:

 (df.groupby([pd.cut(df['Score'],bins=[60,70,80]),
             'Subject'])
   .size()
   .to_frame('Qty')
)
 

Вывод:

                       Qty
Score    Subject         
(60, 70] Mathematics    2
         Science        1
(70, 80] Mathematics    0
         Science        2
 

Комментарии:

1. Спасибо! Я попробую — фактический набор данных выглядит немного иначе, поэтому я посмотрю, что я могу сделать.