In this post, we will learn how to reverse Pandas dataframe. We start by changing the first column with the last column and continue with reversing the order completely. After we have learned how to swap columns in the dataframe and reverse the order by the columns, we continue by reversing the order of the rows. That is, Pandas dataframe can be reversed such that the last column becomes the first or such that the last row becomes the first.

Data to Work With

First, we need to create some example data to reverse. Here we are going to use the methods normal and binomial from numpy.random.  Using normal we create two different response time variables (response times are often used in experimental psychology) and binomial is used to create response accuracy (also often used in psychology experiments).

How to Create a Pandas dataframe

We will use Pandas to create a dataframe from the data. Note, the simulation of data is not intended to be used for anything else than for us to have data to create a Pandas dataframe.

import pandas as pd import numpy as np distracted = [1 for i in xrange(15)] normal_perf = [0 for i in xrange(15)] sex = ['Male' if i%2 == 0 else 'Female' for i in xrange(30)] rt_distracted = np.random.normal(1660, 100, 15) rt_normal_perf = np.random.normal(1054, 97, 15) accuracy_distracted = np.random.binomial(1, .79, 15) accuracy_normal_perf = np.random.binomial(1, .87, 15) rt = np.concatenate((rt_distracted, rt_normal_perf)) acc = np.concatenate((accuracy_distracted, accuracy_normal_perf)) distracted.extend(normal_perf) subject_id = [i for i in xrange(1,31)] data = {'Sub_id':subject_id, 'Condition':distracted, 'RT':rt, 'Accuracy':acc, 'Gender':sex} data_frame = pd.DataFrame(data)
Pandas Dataframe Object
  • Save
Output of data_frame.head()

Learn how to work with Pandas dataframe (e.g., read csv & excel,  subset, and group) here.

Reversing Pandas Dataframe by Column

In this section, we will learn how to reverse Pandas dataframe by column.
First, we are going to start with changing places of the first (“Accuracy) and last column (“Sub_id”).

How to Swap Columns in a dataframe

In the example below, we create a list of the column names and swap the first item in the list to the last in the list.

columns = data_frame.columns.tolist() columns = columns[-1:] + columns[:-1]

Then we continue with using the created list and the columns in the dataframe will change places. That is, we reverse the data frame by column. Pretty easy:

data_frame = data_frame[columns] data_frame.head()
  • Save
First and last column have changed places

How to Order a Pandas Dataframe alphabetically

In this section, we are going to order a Pandas dataframe alphabetically. That is, we are going to sort our dataframe ascending (i.e., alphabetical):

data_frame = data_frame.sort_index(axis=1 ,ascending=True) data_frame.head()

How to Reverse the Order of the Columns

In this section, we will learn how to reverse the order of the columns in the dataframe. That is, we can also reverse pandas dataframe completely. In the code example below, the second line (columns[::-1]) reverse the list of column names. Third, the dataframe is reversed using that list.

columns = data_frame.columns.tolist() columns = columns[::-1] data_frame = data_frame[columns]

How to Reverse a Single Column

In this Pandas reverse dataframe example we are going to reverse only one of the columns.

data_frame["Sub_id"] = data_frame["Sub_id"].values[::-1] data_frame.head()

Reverse Pandas Dataframe by Row

Pandas dataframe object can also be reversed by row. That is, we can get the last row to become the first.  We start by re-orderĂ­ng the dataframe ascending. Note in the example below we use the axis argument and set it to “1”. This will make Pandas sort over the rows instead of the columns.

data_frame = data_frame.sort_index(axis=1 ,ascending=True)

First, we will use iloc which is integer based to reverse the order of the Pandas dataframe:

data_frame = data_frame.iloc[::-1]

However, we can also use sort_index by using the axis 0 (row). The code below will, of course, reverse the dataframe back to the one we started with.

data_frame = data_frame.sort_index(ascending=True, axis=0)

Lastly, we can also use the method reindex to reverse by row. This will sort Pandas Dataframe reversed. That is, the last element will be first.

data_frame = data_frame.reindex(index=data_frame.index[::-1]) data_frame.head()

That was it; six ways to reverse Pandas Dataframe. You can go to my GitHub-page to get a Jupyter notebook with all the above code and some output: Jupyter notebook. Now that you know how to reverse columns and rows in, you might also want to know how to rename columns in Pandas.

reverse pandas dataframe
  • Save
Share via
Copy link
Powered by Social Snap