Skip to main content
HomeTutorialsPython

Mastering the Pandas .explode() Method: A Comprehensive Guide

Learn all you need to know about the pandas .explode() method, covering single and multiple columns, handling nested data, and common pitfalls with practical Python code examples.
Updated Feb 2024  · 5 min read

In the world of data manipulation with pandas, the .explode() method often comes as a handy tool when working with lists in DataFrames. This tutorial serves as a handbook to mastering the .explode() method, from its basic mechanics to advanced applications and common pitfalls.

The Short Answer: Here’s How .explode() Works

If you’re here for a quick answer, just read this section. The .explode() method is designed to expand entries in a list-like column across multiple rows, making each element in the list a separate row. For example, we'll use the following DataFrame df to illustrate the process:

ID

Interests

1

['Python', 'Data Science']

2

['Machine Learning', 'AI']

The .explode() method will expand the elements of the Interests column, as such:

# Explode the Interests column 
exploded_df = df.explode('Interests')

ID

Interests

1

Python

1

Data Science

2

Machine Learning

2

AI

What is the Pandas .explode() Method?

The .explode() method is designed to simplify the handling of nested data, such as lists or tuples, within pandas DataFrames. By converting each element of a list-like structure into a separate row, .explode() enhances data accessibility and analysis readiness.

How Does the .explode() Method Work?

The functionality of .explode() is both powerful and straightforward, with a focus on user-friendliness and efficiency in data manipulation tasks.

  • Column: Specifies the column with list-like entries to explode.
  • ignore_index: When set to True, the method resets the index to a default integer index, aiding in preserving DataFrame integrity post-explosion. The default value is set to False.

Two ways to use the Pandas .explode() method

Exploding Single Columns in Pandas

The most common use case involves exploding a single column, effectively expanding each of its list-like entries into individual rows. In the short answer section, we covered this exactly. Let’s revisit this example. Here we have the DataFramed df, which contains IDs of individuals & their learning interests. As you can see, the learning interests are formatted as lists.

ID

Interests

1

['Python', 'Data Science']

2

['Machine Learning', 'AI']

The .explode() method will expand the elements of the Interests column into individual rows as such:

# Explode the Interests column 
exploded_df = df.explode('Interests')

ID

Interests

1

Python

1

Data Science

2

Machine Learning

2

AI

This method is particularly useful for columns containing categorical data or multiple attributes per observation.

Exploding Multiple Columns in Pandas

You may also encounter scenarios where you must explode multiple columns within a DataFrame. This is particularly useful when dealing with datasets where multiple columns contain list-like structures that need to be unpacked simultaneously. Let’s add an additional Tools column to df to illustrate this:

ID

Interests

Tools

1

['Python', 'Data Science']

['Pandas', 'NumPy']

2

['Machine Learning', 'AI']

['Scikit-learn', 'TensorFlow']

To explode multiple columns, just include the specified columns to explode in a list

# Explode the Interests & Tools columns
exploded_df = df.explode(['Interests', 'Tools'])

ID

Interests

Tools

1

Python

Pandas

1

Data Science

NumPy

2

Machine Learning

Scikit-learn

2

AI

TensorFlow

This method is particularly useful when working with multiple columns that contain lists. That said, there are some pitfalls you may encounter when working with.explode(), which we will explore in the following section.

Common Errors of Using Pandas .explode() and Solutions

Duplicate Columns Exploded

A common pitfall when working with .explode() is accidentally exploding duplicate columns when using the method. As a reminder, always make sure the list of columns you add are unique!

# Incorrect, exploding duplicate columns
df.explode(['Interests','Tools','Interests'])

# Correct, exploding unique columns
df.explode(['Interests','Tools'])

Exploding Strings that Look Like Lists

Oftentimes, you may have rows in your DataFrames that are strings but look like lists. Attempting to explode a column with strings that resemble lists, such as "['Python', 'AI']", results in no change since the .explode() method expects actual list-like objects, not strings that look like lists. Here’s an example of what this could look like and a solution! Let’s imagine df had the following values:

ID

Interests

1

"['Python', 'Data Science']"

2

"['Machine Learning', 'AI']"

As you can see, the Interests column has values that are strings that look like lists. Using .explode() on Interests would not result in any change since the values are single strings. To fix this, we convert the values of Interests into lists.

import ast

df['Interests'] = df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')
print(exploded_df) # This will work

Non-Matching Lengths in Multiple Columns

When working with pandas DataFrames, a common pitfall is encountering rows where list-like structures in specified columns for explosion have non-matching lengths. This discrepancy can lead to misaligned or incomplete data after using the .explode() method on multiple columns. For example, let’s imagine df is as follows:

ID

Interests

Tools

1

['Python', 'Data Science']

['Pandas']

2

['Machine Learning']

['Scikit-learn', 'TensorFlow']

As seen, the Interests and Tools columns contain lists of different lengths. Using .explode() on these columns as is would result in an error, as columns must have a matching number of values in the lists. To fix this, you can pad the lists with None using a custom function, as seen here:

​​# Function to pad lists to the same length
def pad_lists(row):
    max_len = max(len(row['Interests']), len(row['Tools']))
    row['Interests'] += [None] * (max_len - len(row['Interests']))
    row['Tools'] += [None] * (max_len - len(row['Tools']))
    return row

# Apply the padding function to each row
df = df.apply(pad_lists, axis=1)

# Now, safely explode both columns
df.explode(['Interests','Tools'])

ID

Interests

Tools

1

Python

Pandas

1

Data Science

None

2

Machine Learning

Scikit-learn

2

None

TensorFlow

Final Thoughts

In summary, the .explode() method is a useful method when unpacking elements in a list of values as rows in a Pandas DataFrame. For more pandas learning, check out the following resources:


Photo of Adel Nehme
Author
Adel Nehme

Adel is a Data Science educator, speaker, and Evangelist at DataCamp where he has released various courses and live training on data analysis, machine learning, and data engineering. He is passionate about spreading data skills and data literacy throughout organizations and the intersection of technology and society. He has an MSc in Data Science and Business Analytics. In his free time, you can find him hanging out with his cat Louis.

Topics

Start Your Pandas Journey Today!

Certification available

Course

Data Manipulation with pandas

4 hr
350.2K
Learn how to import and clean data, calculate statistics, and create visualizations with pandas.
See DetailsRight Arrow
Start Course
See MoreRight Arrow
Related

Becoming Remarkable with Guy Kawasaki, Author and Chief Evangelist at Canva

Richie and Guy explore the concept of being remarkable, growth, grit and grace, the importance of experiential learning, imposter syndrome, finding your passion, how to network and find remarkable people, measuring success through benevolent impact and much more. 
Richie Cotton's photo

Richie Cotton

55 min

Python NaN: 4 Ways to Check for Missing Values in Python

Explore 4 ways to detect NaN values in Python, using NumPy and Pandas. Learn key differences between NaN and None to clean and analyze data efficiently.
Adel Nehme's photo

Adel Nehme

5 min

Seaborn Heatmaps: A Guide to Data Visualization

Learn how to create eye-catching Seaborn heatmaps
Joleen Bothma's photo

Joleen Bothma

9 min

Test-Driven Development in Python: A Beginner's Guide

Dive into test-driven development (TDD) with our comprehensive Python tutorial. Learn how to write robust tests before coding with practical examples.
Amina Edmunds's photo

Amina Edmunds

7 min

Exponents in Python: A Comprehensive Guide for Beginners

Master exponents in Python using various methods, from built-in functions to powerful libraries like NumPy, and leverage them in real-world scenarios to gain a deeper understanding.
Satyam Tripathi's photo

Satyam Tripathi

9 min

Python Linked Lists: Tutorial With Examples

Learn everything you need to know about linked lists: when to use them, their types, and implementation in Python.
Natassha Selvaraj's photo

Natassha Selvaraj

9 min

See MoreSee More