Change the order of columns in a Python Pandas DataFrame

David Y.
jump to solution

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:

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:

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.

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
List files in a directory using Python
David Y.
Append vs. extend in Python
David Y.
Convert a string to bytes in Python
David Y.

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.

Sentry