How to change the order of DataFrame columns?

First let's create a data frame with values.

import pandas as pd import numpy as np df = pd.DataFrame() df['Name'] = ['John', 'Doe', 'Bill','Jim','Harry','Ben'] df['TotalMarks'] = [82, 38, 63,22,55,40] df['Grade'] = ['A', 'E', 'B','E','C','D'] df['Promoted'] = [True, False,True,False,True,True] df
Name TotalMarks Grade Promoted 0 John 82 A True 1 Doe 38 E False 2 Bill 63 B True 3 Jim 22 E False 4 Harry 55 C True 5 Ben 40 D True
Print the column in order
cols = df.columns.tolist() cols
['Name', 'TotalMarks', 'Grade', 'Promoted']

Rearrange the column order manually

df =df[['Promoted','Grade','TotalMarks','Name']]
Again print the column order:
cols = df.columns.tolist() cols
['Promoted', 'Grade', 'TotalMarks', 'Name']

Change column order using index

Following program change the last colun first using column index.

cols = df.columns.tolist() cols
['Name', 'TotalMarks', 'Grade', 'Promoted']

Change the last column to first

cols = df.columns.tolist() cols = cols[-1:] + cols[:-1] df =df[cols] df
Promoted Name TotalMarks Grade 0 True John 82 A 1 False Doe 38 E 2 True Bill 63 B 3 False Jim 22 E 4 True Harry 55 C 5 True Ben 40 D

Reorder DataFrame column in sorted order

df = df.reindex(columns=sorted(df.columns)) df
Grade Name Promoted TotalMarks 0 A John True 82 1 E Doe False 38 2 B Bill True 63 3 E Jim False 22 4 C Harry True 55 5 D Ben True 40

Using for loop to rearrange column order

cols = ['Grade'] + [col for col in df if col != 'Grade'] df = df[cols] df
Grade Name TotalMarks Promoted 0 A John 82 True 1 E Doe 38 False 2 B Bill 63 True 3 E Jim 22 False 4 C Harry 55 True 5 D Ben 40 True