Moving a dataframe column and changing column order

pandas move column to specific position
pandas reorder columns by index
pandas move column to position
pandas reorder columns multiindex
reorder dataframe columns r
pandas change column name
pandas reorder rows
pandas dataframe how to change column order

I have a dataframe called df which has the following columns header of data:

date           A    B     C   D    E    F      G          H       I
07/03/2016  2.08    1   NaN NaN 1029    2   2.65    4861688 -0.0388
08/03/2016  2.20    1   NaN NaN 1089    2   2.20    5770819 -0.0447
:                                                                 :   

09/03/2016  2.14    1   NaN NaN 1059    2   2.01    5547959 -0.0514
10/03/2016  2.25    1   NaN NaN 1089    2   1.95    4064482 -0.0520

Is there a way to change the order of the columns so that column F is moved to a position that is after column H. The resulting df would look like:

date           A    B     C   D    E    F      G          H  F       I
07/03/2016  2.08    1   NaN NaN 1029    2   2.65    4861688  2 -0.0388
08/03/2016  2.20    1   NaN NaN 1089    2   2.20    5770819  2 -0.0447
:                                                                    :   

09/03/2016  2.14    1   NaN NaN 1059    2   2.01    5547959  2 -0.0514
10/03/2016  2.25    1   NaN NaN 1089    2   1.95    4064482  2 -0.0520

Use this :

df = df[['date','A','B','C','D','E','F','G','H','F','I']]

--- Edit

columnsName = list(df.columns)
F, H = columnsName.index('F'), columnsName.index('H')
columnsName[F], columnsName[H] = columnsName[H],columnsName[F]
df = df[columnsName]

Pandas Rename and Reorder Columns, We will re-order the column by moving column z to second and y to third and swap p and q. Let's see how we can do this by simply assigning  Pandas Rename and Reorder Columns. Pandas has two ways to rename their Dataframe columns, first using the df.rename() function and second by using df.columns, which is the list representation of all the columns in dataframe. We will re-order the column by moving column z to second and y to third and swap p and q. The column c is replaced with None.

Use df.insert with df.columns.get_loc to dynamically determine the position of insertion.

col = df['F'] # df.pop('F') # if you want it removed
df.insert(df.columns.get_loc('H') + 1, col.name, col, allow_duplicates=True)

df
         date     A  B   C   D     E  F     G        H  F       I
0  07/03/2016  2.08  1 NaN NaN  1029  2  2.65  4861688  2 -0.0388
1  08/03/2016  2.20  1 NaN NaN  1089  2  2.20  5770819  2 -0.0447
...

Reordering Pandas DataFrame Columns: Thumbs Down On , or other resources show the similar standard methods for moving columns around (changing their order) in a Pandas DataFrame. This… Say you have a DataFrame with dozens or hundreds of columns and you wish to move one column only. It will be inefficient to explicitly list all columns for purposes of moving one column. Listing all columns is also problematic because changes to other aspects of the related codebase may cause errors. Additions, removals, or modifications to other column names will break earlier implementations of the standard solution. Leveraging handy Pandas methods. Another standard solution to is to pair

This is one way via pd.DataFrame.iloc, which uses integer-location based indexing for selecting by position.

It's also a gentle reminder that pandas integer indexing is based on numpy.

import pandas as pd
import numpy as np

df = pd.DataFrame(columns=list('ABCDEFGHI'))

cols = np.insert(np.arange(df.shape[1]),
                 df.columns.get_loc('H')+1,
                 df.columns.get_loc('F'))

res = df.iloc[:, cols]

print(res)

Empty DataFrame
Columns: [A, B, C, D, E, F, G, H, F, I]
Index: []

How to reorder columns in a Pandas DataFrame in Python, Use the syntax DataFrame[["column1", "column2", "column3"]] with the column names in the desired order to reorder the columns. print(df). Output. A B C 0 1 4 7  Change the order of columns in Pandas dataframe. import modules. import pandas as pd import numpy as np. create dummy dataframe. raw_data = change order of the

You can use:

df.reindex(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'F', 'I'], axis=1)

Change the order of columns in Pandas dataframe, change order of the columns. #now 'age' will appear at the end of our df df = df[['​favorite_color','grade','name','age']] df.head()  You can rearrange columns directly by specifying their order: In the case of larger dataframes where the column titles are dynamic, you can use a list comprehension to select every column not in your target set and then append the target set to the end.

Not for the author of this question, but perhaps for others.

list = df.columns.tolist() # list the columns in the df
list.insert(8, list.pop(list.index('F'))) # Assign new position (i.e. 8) for "F" 
df = df.reindex(columns= list) # Now move 'F' to ist new position

How to change the order of DataFrame columns in pandas, You can rearrange a DataFrame object by declaring a list of columns and using it as a key. [code]import How do you move columns in a dataframe in Pandas? Your dataframe has four columns like so df[,c(1,2,3,4)] . Note the first comma means keep all the rows, and the 1,2,3,4 refers to the columns. To change the order as in the above question do df2[,c(1,3,2,4)] If you want to output this file as a csv, do write.csv(df2, file="somedf.csv")

Dataframe rearrangement, Sometimes we want to get dataframe columns in a different order from how they'​re read Changing row order works the same way as changing column order. A native R approach that works with any number of rows or columns to move the last column of a dataframe to the first column position: df <- df[,c(ncol(df),1:ncol(df)-1)] It can be used to move any column to the first column by replacing: df <- df[,c(your_column_number_here,1:ncol(df)-1)]

Reordering the columns in a data frame, You want to do reorder the columns in a data frame. actually change `data`, you need to save it back into `data`: # data <- data[c(1,3,2)] # Reorder by column​  The above examples index into the data frame by treating it as a list (a data frame is essentially a list of vectors). You can also use matrix-style indexing, as in data [row, col], where row is left blank. The drawback to matrix indexing is that it gives different results when you specify just one column.

Reordering Data Frame Columns in R - Easy Guides - Wiki, Pleleminary tasks; Reorder column by position; Reorder column by name; Summary Launch RStudio as described here: Running RStudio and setting up your  You need to create a new list of your columns in the desired order, then use df = df[cols] to rearrange the columns in this new order. cols = ['mean'] + [col for col in df if col != 'mean'] df = df[cols] You can also use a more general approach. In this example, the last column (indicated by -1) is inserted as the first column.

Comments
  • But you want it also included before G?
  • Same as in the other question, if OP could hardcode this they wouldn't need to ask the question.
  • I'm not sure, because his may not be what they're looking for, assuming they want to retain the F at its existing position. Well, you can fix that with list.insert.
  • You are right. But I dont think it is right to point out other answers’ limitations in the beginning of yours. I’d point out that you have a general solution rather than specific. Upvoted nonetheless.
  • Removed because 2/3 of the other answers are no longer hardcoded, @AntonvBR
  • However, in general, it is valid to point out the technical deficiencies of other answers... that's the whole point of this site :) I've even got one of them to edit a better one in. Their initial versions were not good precisely because they were specific. You don't want your code to work for one situation and fail for the 99 million others.
  • Hardcoding the columns like this quite frankly defeats the purpose of the question.
  • @coldspeed I read the question as OP doesn't understand how to reindex columns; you read it as OP doesn't understand how to find an entry in a list. I think the later one is very unlikely. From df.columns you can get a list, then it's just some general Python stuff.
  • If it's the former, then this is a duplicate. But I still think one should demonstrate good practices where possible ;-)