I have the following data frame:
import pandas as pd # Create DataFrame df = pd.DataFrame( {'id':[2967, 5335, 13950, 6141, 6169],\ 'Player': ['Cedric Hunter', 'Maurice Baker' ,\ 'Ratko Varda' ,'Ryan Bowen' ,'Adrian Caldwell'],\ 'Year': [1991 ,2004 ,2001 ,2009 ,1997],\ 'Age': [27 ,25 ,22 ,34 ,31],\ 'Tm':['CHH' ,'VAN' ,'TOT' ,'OKC' ,'DAL'],\ 'G':[6 ,7 ,60 ,52 ,81]}) df.set_index('Player', inplace=True)
It shows:
Out[128]: Age G Tm Year id Player Cedric Hunter 27 6 CHH 1991 2967 Maurice Baker 25 7 VAN 2004 5335 Ratko Varda 22 60 TOT 2001 13950 Ryan Bowen 34 52 OKC 2009 6141 Adrian Caldwell 31 81 DAL 1997 6169
What I want to do is to sort the 'Player' index in the arbitrary order according to this list (NOTE: not alphabetical order):
reorderlist = [ 'Maurice Baker', 'Adrian Caldwell','Ratko Varda' ,'Ryan Bowen' ,'Cedric Hunter']
How can I do that?
Just reindex
df.reindex(reorderlist) Out[89]: Age G Tm Year id Player Maurice Baker 25 7 VAN 2004 5335 Adrian Caldwell 31 81 DAL 1997 6169 Ratko Varda 22 60 TOT 2001 13950 Ryan Bowen 34 52 OKC 2009 6141 Cedric Hunter 27 6 CHH 1991 2967
Update info you have multiple players with same name
out = df.iloc[pd.Categorical(df.index,reorderlist).argsort()]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With