DataFrame.set_index() method in Pandas (5 examples)

Updated: February 22, 2024 By: Guest Contributor Post a comment


Handling data is an integral part of data analysis and data science. Pandas, a highly popular Python library, offers foundational structures like DataFrames that simplify data manipulation. An essential method in managing data is set_index(), which allows you to set the DataFrame index using one or more existing columns. Mastering set_index() helps in making data analysis more intuitive and structured by leveraging the index to access and manipulate data more efficiently. This tutorial explores the set_index() method through 5 practical examples, progressing from basic to advanced applications.

Getting Started

Before delving into examples, ensure you have Pandas installed and imported:

import pandas as pd

If you need to install Pandas, run pip install pandas in your terminal or command prompt.

Let’s start by creating a simple DataFrame:

data = {
  'Name': ['John', 'Anna', 'Peter', 'Linda'],
  'Age': [28, 34, 29, 32],
  'City': ['New York', 'Paris', 'Berlin', 'London']
df = pd.DataFrame(data)

We’ll use this in the examples to come.

Basic Usage of set_index()

To set ‘Name’ as the index:

df.set_index('Name', inplace=True)


       Age      City
John    28  New York
Anna    34    Paris
Peter   29   Berlin
Linda   32   London

Setting Multiple Columns as Index

For more complex data structures, you may want to use multiple columns as an index. For instance:

df.reset_index(inplace=True)  # Reset to default index
df.set_index(['Name', 'City'], inplace=True)


Name  City         
John  New York   28
Anna  Paris       34
Peter Berlin      29
Linda London      32

Using set_index() with append=True

There may be cases where you want to keep the existing index and add another level of indexing. In such scenarios, append=True is your tool:

df.set_index(['Name'], append=True, inplace=True)


          City  Age
0 John    New York 28
1 Anna    Paris     34
2 Peter   Berlin    29
3 Linda   London    32

Dropping Index vs. Not Dropping the Column

By default, set_index() removes the column(s) you turn into an index. To retain those columns in the DataFrame, use drop=False:

df.set_index('Name', drop=False, inplace=True)


       Name       City  Age
John    John  New York   28
Anna    Anna    Paris     34
Peter   Peter   Berlin    29
Linda   Linda   London    32

Creating a MultiIndex DataFrame from a Flat DataFrame

For an advanced application, you might find yourself needing to create a hierarchical index (MultiIndex) from a flat structure. Here’s an example that combines several previous concepts:

# Assume a new column 'Gender' is added for this example
df['Gender'] = ['Male', 'Female', 'Male', 'Female']
df.set_index(['Gender', 'Name', 'City'], inplace=True)


Gender Name  City           
Male   John New York       28
Female Anna Paris           34
Male   Peter Berlin          29
Female Linda London          32


Through these examples, we’ve explored the versatility of the set_index() method in Pandas. Starting from basic index setting to complex hierarchical indexing, set_index() facilitates a wide array of data manipulation tactics that are indispensable in data analysis. As always, experimenting with real datasets is the best way to cement your understanding and uncover more advanced functionalities.