Comment changer l'ordre de colonne dans Pandas DataFrame
df = df.reindex(columns=column_names)
Ugliest Unicorn
df = df.reindex(columns=column_names)
# setting up a dummy dataframe
raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'],
'age': [20, 19, 22, 21],
'favorite_color': ['blue', 'red', 'yellow', "green"],
'grade': [88, 92, 95, 70]}
df = pd.DataFrame(raw_data, index = ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer McDaniel'])
df
#now 'age' will appear at the end of our df
df = df[['favorite_color','grade','name','age']]
df.head()
cols = df.columns.tolist()
cols = cols[-1:] + cols[:-1] #bring last element to 1st position
df = df.reindex(cols, axis=1)
In [7]: cols = df.columns.tolist()
In [8]: cols
Out[8]: [0L, 1L, 2L, 3L, 4L, 'mean']
In [12]: cols = cols[-1:] + cols[:-1]
In [13]: cols
Out[13]: ['mean', 0L, 1L, 2L, 3L, 4L]
In [14]: df = df[cols]
# Get column list in ['item1','item2','item3'] format
df.columns
# [0]output:
Index(['item1','item2','item3'], dtype='object')
# Copy just the list portion of the output and rearrange the columns
cols = ['item3','item1','item2']
# Resave dataframe using new column order
df = df[cols]
# Want to change column3 to show up first
df = pd.Dataframe({
"column1":(1,2,3),
"column2":(4,5,6),
"column3":(7,8,9)
}
# From all solutions I could find, this seems to be the best performance wise:
col = df.pop(col_name)
df.insert(0, col.name, col)# <- works in place and returns None (at least for me)