Sentry Answers>Python>

Change the order of columns in a Python Pandas DataFrame

Change the order of columns in a Python Pandas DataFrame

David Y.

The Problem

How can I change the order of columns in a Python Pandas DataFrame?

The Solution

Pandas allows us to change the order of columns in a DataFrame by passing in a reordered list of column names:

Click to Copy
import pandas data = { "Product": ["Apple", "Orange", "Pear"], "Selling Price": [2, 3, 4], "Cost Price": [1, 2, 3], } df = pandas.DataFrame(data) print(df) # output: # Product Selling Price Cost Price # 0 Apple 2 1 # 1 Orange 3 2 # 2 Pear 4 3 df = df[["Product", "Cost Price", "Selling Price"]] print(df) # output: # Product Cost Price Selling Price # 0 Apple 1 2 # 1 Orange 2 3 # 2 Pear 3 4

In some cases, we may want to reorder columns programmatically rather than manually. We can do this by casting df.columns.values to a list and using standard list methods on it before passing it back to df[]. For example, we could use the following code to programmatically perform the same reordering as above:

Click to Copy
import pandas data = { "Product": ["Apple", "Orange", "Pear"], "Selling Price": [2, 3, 4], "Cost Price": [1, 2, 3], } df = pandas.DataFrame(data) print(df) # output: # Product Selling Price Cost Price # 0 Apple 2 1 # 1 Orange 3 2 # 2 Pear 4 3 column_names = list(df.columns.values) # will be ["Product", "Selling Price", "Cost Price"] column_names.insert(1, column_names[-1]) # insert last element of list at index 1 column_names.pop() # remove last element of list df = df[column_names] print(df) # output: # Product Cost Price Selling Price # 0 Apple 1 2 # 1 Orange 2 3 # 2 Pear 3 4

We could also use this technique to sort our columns alphabetically, using list.sort.

Click to Copy
import pandas data = { "Product": ["Apple", "Orange", "Pear"], "Selling Price": [2, 3, 4], "Cost Price": [1, 2, 3], } df = pandas.DataFrame(data) print(df) # output: # Product Selling Price Cost Price # 0 Apple 2 1 # 1 Orange 3 2 # 2 Pear 4 3 column_names = list(df.columns.values) # will be ["Product", "Selling Price", "Cost Price"] column_names.sort() # sort names alphabetically df = df[column_names] print(df) # output: # Cost Price Product Selling Price # 0 1 Apple 2 # 1 2 Orange 3 # 2 3 Pear 4
  • Sentry BlogPython Performance Testing: A Comprehensive Guide (opens in a new tab)
  • Syntax.fmListen to the Syntax Podcast (opens in a new tab)
  • Sentry BlogLogging in Python: A Developer’s Guide (opens in a new tab)
  • CodecovPython - Codecov (opens in a new tab)
  • Syntax.fm logo
    Listen to the Syntax Podcast (opens in a new tab)

    Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.

    SEE EPISODES

Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.