have a list of ranks from 1-100 divided among 1000 people for multiple exams
Snippet:
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
using pivot and groupby how to divide this something like this based on count
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
tried pivot and groupby , but how to create the columns 0-10 ..... 90-100 automatically rather than manually
Tried this : but it is taking long time
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'})
Then i'm merging all these, is there any easy way