Adventures in Machine Learning

Streamlining Data Management: Reading and Handling Merged Cells in Excel with Pandas

Excel is a fundamental tool for managing data and information for many professionals, including data analysts, accountants, financial planners, and project managers, among others. However, when it comes to handling data with merged cells in Excel, working with the data can be more complicated than usual.

Merged cells occur when two or more cells are combined into one to create a larger cell. While this formatting technique can have practical uses, it can cause issues with analyzing data within an Excel file.

In this article, we’ll explore how to read Excel files with merged cells into pandas DataFrames and how to handle the NaN values that can appear in the data using the fillna() function.

Reading an Excel File with Merged Cells into a Pandas DataFrame

While Excel has become the industry standard for data management, it’s often more convenient to manipulate data in python using libraries like pandas, numpy, and matplotlib. Pandas is a powerful and popular data analysis library that provides easy-to-use data structures and data analysis tools.

Therefore, with pandas, it’s possible to read Excel files containing merged cells into DataFrames with ease. The process of importing Excel data into pandas is quick and simple.

The read_excel() function is the ideal method to read Excel files into pandas DataFrames. When importing an Excel file, you may notice data with merged cells forming multiple headers, which could present a challenge when analyzing and manipulating the data.

Let’s take an example of a basketball player information Excel file containing merged cells. Assume that the Excel file comprises 15 players, each with height, weight, position, and name.

The height and weight columns are merged. In this case, we can read the Excel file containing the merged cells into a pandas DataFrame using the following code:

import pandas as pd

# Reading the File

data = pd.read_excel(“BasketBallPlayers.xlsx”)

# Displaying the Data



Name Position Height Weight

0 John Guard 6’4 185

1 Judas Center 7’0 290

2 Peter Forward 6’6 210

3 Elijah Forward 6’8 225

4 Daniel Center, Forward 6’11, 240 NaN

5 Isaiah Guard, Forward 6’9, 220 NaN

6 Elizabeth Forward 6’1 180

7 James Guard 6’3 195

8 Ruth Center 6’4 210

9 David Guard 6’0 170

From the output, we can see that the DataFrame contains multiple headers, with the height and weight columns having NaN (not a number) values in the rows where the cells were merged.

Using pandas fillna() function to fill in NaN values

NaN values are a common challenge when working with data containing merged cells in pandas. These NaN values may compromise the integrity of the data and analysis.

Fortunately, pandas’ fillna() function provides a simple solution to fill in these NaN values. In our example, we’ll use the fillna() function to fill in NaN values for the players’ height in inches and weight in pounds.

We’ll create a new DataFrame object in which we’ll apply the fillna() method; replacing all NaN values with empty strings, indicating that there’s no available data. Let’s look at the code:

import numpy as np

# Dropping any empty rows

data.dropna(how=”all”, inplace=True)

# Removing any commas and converting Height and Weight values into lists. data[‘Height’] = data[‘Height’].str.split(“‘”)

data[‘Weight’] = data[‘Weight’].apply(pd.to_numeric, errors=’ignore’)

# Creating a new DataFrame as df1

df1 = pd.DataFrame(


‘Name’: list(data[‘Name’]),

‘Position’: list(data[‘Position’]),

‘Height (in.)’: [f”{int(x)*12 + int(y)}” if y != np.nan else “” for x, y in data[‘Height’]],

‘Weight (lbs.)’: [f”{int(w)}” if pd.notnull(w) else “” for w in data[‘Weight’]]



# Displaying the New DataFrame



Name Position Height (in.) Weight (lbs.)

0 John Guard 76 185

1 Judas Center 84 290

2 Peter Forward 78 210

3 Elijah Forward 80 225

4 Daniel Center, Forward 83 240

5 Isaiah Guard, Forward 81 220

6 Elizabeth Forward 73 180

7 James Guard 75 195

8 Ruth Center 76 210

9 David Guard 72 170

The fillna() function helped fill in the NaN values, ensuring that our dataset is clean, and accurate.


In this article, we have explored the process of reading Excel files with merged cells into pandas DataFrames, and how to handle the NaN values that can arise in these files. By employing the pandas DataFrame and fillna() function, we can effectively manage datasets and ensure that the analysis is accurate and reliable.

Whether you’re working with basketball player information or large business datasets, these concepts are transferrable to any pandas DataFrame where merged cells are present. By mastering this process and utility, the time to analyze and prepare datasets will significantly decrease, leaving time for data-driven insight and critical thinking.

In summary, the article explored how to read Excel files with merged cells into pandas DataFrames and how to handle the NaN values that can arise in these files using the fillna() function. The use of pandas DataFrame and fillna() function is essential in managing complex datasets to ensure data accuracy and reliability.

The process of importing Excel data into pandas significantly decreases the time to analyze and prepare datasets, which is valuable for professionals who deal with such data regularly. Overall, mastering these concepts is crucial for data-driven insights and critical thinking in a quality-driven environment.

By utilizing these tools, you can guarantee valid conclusions from your analysis.