Python Pandas - Create a DataFrame with both the original index and name

To create a DataFrame with both the original index and name, use the index.to_frame() method in Pandas. This method converts an Index object into a DataFrame while preserving the index name as both the column name and row index labels.

Syntax

Index.to_frame(index=True, name=None)

Parameters:

  • index: Boolean, default True. Set the index of the returned DataFrame as the original Index.
  • name: Object, default None. The passed name should substitute for the index name.

Creating a Named Index

Let's start by creating a Pandas Index with a name ?

import pandas as pd

# Creating Pandas index with a name
index = pd.Index(['Electronics', 'Accessories', 'Decor', 'Books', 'Toys'], name='Products')

# Display the Pandas index
print("Pandas Index...")
print(index)
Pandas Index...
Index(['Electronics', 'Accessories', 'Decor', 'Books', 'Toys'], dtype='object', name='Products')

Converting Index to DataFrame

Now let's convert the index to a DataFrame using to_frame() ?

import pandas as pd

# Creating Pandas index
index = pd.Index(['Electronics', 'Accessories', 'Decor', 'Books', 'Toys'], name='Products')

# Convert index to DataFrame
df = index.to_frame()
print("Index to DataFrame...")
print(df)
Index to DataFrame...
            Products
Products            
Electronics  Electronics
Accessories  Accessories
Decor              Decor
Books              Books
Toys                Toys

Complete Example

Here's a complete example showing the conversion process with additional index information ?

import pandas as pd

# Creating Pandas index
index = pd.Index(['Electronics', 'Accessories', 'Decor', 'Books', 'Toys'], name='Products')

# Display the Pandas index
print("Pandas Index...")
print(index)

# Return the number of elements in the Index
print("\nNumber of elements in the index...")
print(index.size)

# Return the dtype of the data
print("\nThe dtype object...")
print(index.dtype)

# Convert index to DataFrame
print("\nIndex to DataFrame...")
print(index.to_frame())
Pandas Index...
Index(['Electronics', 'Accessories', 'Decor', 'Books', 'Toys'], dtype='object', name='Products')

Number of elements in the index...
5

The dtype object...
object

Index to DataFrame...
            Products
Products            
Electronics  Electronics
Accessories  Accessories
Decor              Decor
Books              Books
Toys                Toys

Customizing the DataFrame

You can also customize the resulting DataFrame by specifying different parameters ?

import pandas as pd

index = pd.Index(['Electronics', 'Accessories', 'Decor'], name='Products')

# Convert with custom column name
df_custom = index.to_frame(name='Category')
print("With custom column name:")
print(df_custom)

# Convert without using index as row labels
df_no_index = index.to_frame(index=False)
print("\nWithout index as row labels:")
print(df_no_index)
With custom column name:
            Category
Products            
Electronics  Electronics
Accessories  Accessories
Decor              Decor

Without index as row labels:
      Products
0  Electronics
1  Accessories
2        Decor

Conclusion

The to_frame() method provides a convenient way to convert a Pandas Index into a DataFrame while preserving the index name. This is useful when you need to work with index data in DataFrame format for further analysis or manipulation.

Updated on: 2026-03-26T16:10:26+05:30

223 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements