[Solved] Key of Type tuple not found and not a multiindex

You might have got the “key of type tuple not found and not a multiindex” error while working on a Pandas data frame in Python. Go through this blog to know how you can resolve this error.

About the error

The “key of type tuple not found and not a multiindex” is an error that occurs while you are working on a data frame and trying to access a column through a tuple. Moreover, in this case, multi-indexing doesn’t exist. Thus, a column that has been single-indexed can’t be accessed through a tuple.

What is multi-indexing?

Multi-indexing helps you create a hierarchy. It helps in efficient data analysis and provides specialized indices. It enables grouping and segregation of data at the same time.

product_names = ['Product A', 'Product B', 'Product C']
regions = ['North America', 'Europe', 'Asia']
years = [2021, 2022, 2023]

multi_index = pd.MultiIndex.from_arrays([product_names, regions, years])

Example of error

Let us see when this error occurs using the example given below. Here, no multi-level indexing is present. We are trying to access the element using a tuple; therefore, we will get the “key of type tuple not found and not a multiindex” error.

import pandas as pd

# Create a dataframe with a regular index
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# Attempt to access a column using a tuple as the key
result = df[('A', 'B')]

Methods of resolving the error

If you are trying to obtain a value in the data frame using a tuple as a key, the key should be a tuple. It should not be single-indexed.

  • [] The accessor may not always fetch the correct value. It is better to use a loc accessor.
  • Check if multi-indexing exists in the dataframe.
  • Use quotation marks with column names.
  • Check if proper indexing exists in the dataframe.

Use loc to access tuple as a key

Some sort of hierarchy exists in multi-indexing. You can use the loc accessor to access multiple indices at one point in time. An example given below demonstrates how you can use loc to access the multi-indexed elements.

Here, the tuple comprises X and A. Multi-indexing happens here. At the first level, index X is accessed, followed by the value at A. Thus, two levels exist- the index level and then the column level.

import pandas as pd

df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['X', 'Y', 'Z'])
df.loc[('X', 'A')]  

Therefore, the output will be 1.

Change to Regular Index

The reset_index() method can help you change the multi-index to a regular index if you want to access the columns through a string and not a tuple. This is fine in cases where you have a dataset that supports multi-indexing, but you can remove it easily.

Let’s understand this with an example of multi-indexed data.

import pandas as pd

# Create a DataFrame with a MultiIndex
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
index = pd.MultiIndex.from_tuples([('X', '1'), ('X', '2'), ('Y', '1')], names=('level1', 'level2'))
df = pd.DataFrame(data, index=index)

# Convert the MultiIndex to a regular index, dropping the 'level1' level
df = df.reset_index(level='level1')

# Access columns using strings as keys

In the first place, you can create a data frame with the given index values. This example follows multi-indexing. It specifies two levels: level 1 and level 2 for the given data. So, the given values will be segregated in this manner:


After the grouping into levels is done, you can use the reset_index() method to drop the levels. You can specify the level, too. You can now access the values with the help of strings. Therefore, the output of this code will be: [1 2 3][4 5 6]

Other tips while working with multi-indexing

Multi-indexing in pandas is a fairly easy concept. Check out some tips to do it effortlessly.

  • In order to manipulate the data well, you should develop the hierarchy properly.
  • Some accessors like loc help in easy indexing.
  • If you change your mind regarding the multi-indexed dataset, use reset_index() to change it to a regular index.
  • fillna() or dropna() can help you to handle missing values. Sometimes, multi-indexed data can cause problems.


What type of column names are suggested in multi-indexed columns?

The Python community suggests using descriptive column names that are easy to remember.


This article elaborates the reason for the ‘key of type tuple not found and not a multiindex’ error. It enlists ways through which you can resolve this error in Python. Besides, you can follow some tips when you are working on multi-indexed columns.

Notify of
Inline Feedbacks
View all comments