I want to simply reverse the column order of a given DataFrame.
My DataFrame:
data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],
'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions', 'Lions', 'Lions'],
'wins': [11, 8, 10, 15, 11, 6, 10, 4],
'losses': [5, 8, 6, 1, 5, 10, 6, 12]}
football = pd.DataFrame(data, columns=['year', 'team', 'wins', 'losses'])
Actual output:
year team wins losses
0 2010 Bears 11 5
1 2011 Bears 8 8
2 2012 Bears 10 6
3 2011 Packers 15 1
4 2012 Packers 11 5
5 2010 Lions 6 10
6 2011 Lions 10 6
7 2012 Lions 4 12
I thought this would work but it reverses the row order not column order:
football[::-1]
I also tried:
football.columns = football.columns[::-1]
but that reversed the column labels and not the entire column itself.
A solution close to what you have already tried is to use:
>>> football[football.columns[::-1]]
losses wins team year
0 5 11 Bears 2010
1 8 8 Bears 2011
2 6 10 Bears 2012
3 1 15 Packers 2011
4 5 11 Packers 2012
5 10 6 Lions 2010
6 6 10 Lions 2011
7 12 4 Lions 2012
football.columns[::-1]
reverses the order of the DataFrame's sequence of columns, and football[...]
reindexes the DataFrame using this new sequence.
A more succinct way to achieve the same thing is with the iloc
indexer:
football.iloc[:, ::-1]
The first :
means "take all rows", the ::-1
means step backwards through the columns.
The loc
indexer mentioned in @PietroBattiston's answer works in the same way.