имеют список рангов от 1 до 100, разделенный на 1000 человек для нескольких экзаменов
Фрагмент:
name rank
mark 1
stuart 2
lee 15
lenord 8
sheldon 99
cubbon 26
stuart 35
lee 40
lenord 66
mark 9
sheldon 1
cubbon 2
mark 100
mark 6
с использованием сводной и групповой, как разделить это примерно так на основе количества
name 0-9 10-19 20-29 30-39 40-49 50-59 60-69 70-79 80-89 90-100
mark 3 0 0 0 0 0 0 0 0 1
stuart 1 0 0 1 0 0 0 0 0 0
lee 0 1 0 0 1 0 0 0 0 0
lenord 1 0 0 0 0 0 1 0 0 0
sheldon 1 0 0 0 0 0 0 0 0 1
cubbon 1 0 1 0 0 0 0 0 0 0
пробовал pivot и groupby, но как создать столбцы 0-10 ..... 90-100 автоматически, а не вручную
Попробовал это: но это занимает много времени
rank_1_10=df[(df['rank'] >= 0) & (df['rank'] <= 10)]
rank_1_10=rank_1_10.groupby(['name']).agg({'rank': 'count'})
......
rank_100=df[(df['rank'] >= 90) & (df['rank'] <= 100)]
rank_10=rank_100.groupby(['name']).agg({'rank': 'count'})
Тогда я объединяю все это, есть ли простой способ