How to Convert Wide Dataframe to Tidy Dataframe with Pandas stack()?

Python has become one of the most popular programming languages for data analysis and manipulation, thanks to its rich libraries and frameworks. Among these libraries, Pandas stands out as one of the most valuable and powerful tools for data processing. With Pandas, you can easily load, transform, and analyze data in a wide variety of formats.

In this tutorial, we will explore converting a wide dataframe to a tidy dataframe using the Pandas stack() function. Converting a wide dataframe to a tidy one is an essential step in many data analysis workflows, as it allows for easier data manipulation, plotting, and modeling.

Understanding Wide vs Tidy DataFrames

Before we dive into the conversion process, let's understand the concepts of wide and tidy dataframes.

A wide dataframe is structured where each row represents a single entity or observation, such as a person or product. The wide format often includes multiple columns that store different attributes or variables related to each entity.

In contrast, a tidy dataframe follows a specific structure that makes it easier to analyze and process data. In a tidy dataframe, each row represents a unique observation or measurement, and each column contains distinct variables or attributes.

The Pandas stack() Function

The stack() function in Pandas is specifically designed to pivot or reshape dataframes. It takes a wide dataframe as input and transforms it into a tidy dataframe by stacking the columns into rows. This operation is often referred to as "stacking" because it vertically stacks the column values, resulting in a narrower and longer dataframe.

Converting Wide to Tidy DataFrame

Let's walk through an example to demonstrate how to convert a wide dataframe to a tidy dataframe using the stack() function. Consider the following wide dataframe that contains students' scores in different subjects:

import pandas as pd

# Create a sample wide dataframe
data = {
    'Name': ['Student1', 'Student2', 'Student3'],
    'Math Score': [85, 70, 95],
    'Science Score': [90, 80, 92]
}

wide_df = pd.DataFrame(data)
print("Wide DataFrame:")
print(wide_df)
Wide DataFrame:
       Name  Math Score  Science Score
0  Student1          85             90
1  Student2          70             80
2  Student3          95             92

Applying the stack() Function

Now, let's use the stack() function to convert the wide dataframe into a tidy format. We need to set the 'Name' column as the index first, then apply stack():

import pandas as pd

# Create the wide dataframe
data = {
    'Name': ['Student1', 'Student2', 'Student3'],
    'Math Score': [85, 70, 95],
    'Science Score': [90, 80, 92]
}

wide_df = pd.DataFrame(data)

# Set 'Name' as index and apply stack()
tidy_df = wide_df.set_index('Name').stack().reset_index()
tidy_df.columns = ['Name', 'Subject', 'Score']

print("Tidy DataFrame:")
print(tidy_df)
Tidy DataFrame:
       Name        Subject  Score
0  Student1     Math Score     85
1  Student1  Science Score     90
2  Student2     Math Score     70
3  Student2  Science Score     80
4  Student3     Math Score     95
5  Student3  Science Score     92

Understanding the Results

After applying stack(), we obtain a new dataframe in tidy format. The tidy dataframe has three columns:

  • Name The student identifier
  • Subject The subject name (Math Score or Science Score)
  • Score The corresponding score value

Each row now represents a unique observation (one student's score in one subject), making it easier to analyze and manipulate the data for further processing or visualization.

Key Benefits

Format Structure Best For
Wide Multiple variables in columns Data entry, reports
Tidy One observation per row Analysis, visualization, modeling

Conclusion

The Pandas stack() function is a powerful tool for converting wide dataframes to tidy format. Use set_index() before stacking to preserve identifier columns, and reset_index() afterward to create a clean tidy structure. This transformation makes your data ready for analysis and visualization.

Updated on: 2026-03-27T09:38:08+05:30

471 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements