#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. Спасибо! Я попробую — фактический набор данных выглядит немного иначе, поэтому я посмотрю, что я могу сделать.