I have the following dataframe:
import pandas as pd
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
How can I sort by the index ('Player') using some arbitrary order? For example, as in the following.
reorderlist = ['Maurice Baker',
'Adrian Caldwell',
'Ratko Varda',
'Ryan Bowen',
'Cedric Hunter']
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()]