You can just get/set the index via its name property

CopyIn [7]: df.index.name
Out[7]: 'Index Title'

In [8]: df.index.name = 'foo'

In [9]: df.index.name
Out[9]: 'foo'

In [10]: df
Out[10]: 
         Column 1
foo              
Apples          1
Oranges         2
Puppies         3
Ducks           4
Answer from Jeff on Stack Overflow
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.Index.set_names.html
pandas.Index.set_names — pandas 3.0.3 documentation
>>> idx = pd.Index([1, 2, 3, 4]) >>> idx Index([1, 2, 3, 4], dtype='int64') >>> idx.set_names("quarter") Index([1, 2, 3, 4], dtype='int64', name='quarter')
Top answer
1 of 10
629

You can just get/set the index via its name property

CopyIn [7]: df.index.name
Out[7]: 'Index Title'

In [8]: df.index.name = 'foo'

In [9]: df.index.name
Out[9]: 'foo'

In [10]: df
Out[10]: 
         Column 1
foo              
Apples          1
Oranges         2
Puppies         3
Ducks           4
2 of 10
142

You can use rename_axis, for removing set to None:

Copyd = {'Index Title': ['Apples', 'Oranges', 'Puppies', 'Ducks'],'Column 1': [1.0, 2.0, 3.0, 4.0]}
df = pd.DataFrame(d).set_index('Index Title')
print (df)
             Column 1
Index Title          
Apples            1.0
Oranges           2.0
Puppies           3.0
Ducks             4.0

print (df.index.name)
Index Title

print (df.columns.name)
None

The new functionality works well in method chains.

Copydf = df.rename_axis('foo')
print (df)
         Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

You can also rename column names with parameter axis:

Copyd = {'Index Title': ['Apples', 'Oranges', 'Puppies', 'Ducks'],'Column 1': [1.0, 2.0, 3.0, 4.0]}
df = pd.DataFrame(d).set_index('Index Title').rename_axis('Col Name', axis=1)
print (df)
Col Name     Column 1
Index Title          
Apples            1.0
Oranges           2.0
Puppies           3.0
Ducks             4.0

print (df.index.name)
Index Title

print (df.columns.name)
Col Name
Copyprint df.rename_axis('foo').rename_axis("bar", axis="columns")
bar      Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

print df.rename_axis('foo').rename_axis("bar", axis=1)
bar      Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

From version pandas 0.24.0+ is possible use parameter index and columns:

Copydf = df.rename_axis(index='foo', columns="bar")
print (df)
bar      Column 1
foo              
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

Removing index and columns names means set it to None:

Copydf = df.rename_axis(index=None, columns=None)
print (df)
         Column 1
Apples        1.0
Oranges       2.0
Puppies       3.0
Ducks         4.0

If MultiIndex in index only:

Copymux = pd.MultiIndex.from_arrays([['Apples', 'Oranges', 'Puppies', 'Ducks'],
                                  list('abcd')], 
                                  names=['index name 1','index name 1'])


df = pd.DataFrame(np.random.randint(10, size=(4,6)), 
                  index=mux, 
                  columns=list('ABCDEF')).rename_axis('col name', axis=1)
print (df)
col name                   A  B  C  D  E  F
index name 1 index name 1                  
Apples       a             5  4  0  5  2  2
Oranges      b             5  8  2  5  9  9
Puppies      c             7  6  0  7  8  3
Ducks        d             6  5  0  1  6  0

Copyprint (df.index.name)
None

print (df.columns.name)
col name

print (df.index.names)
['index name 1', 'index name 1']

print (df.columns.names)
['col name']

Copydf1 = df.rename_axis(('foo','bar'))
print (df1)
col name     A  B  C  D  E  F
foo     bar                  
Apples  a    5  4  0  5  2  2
Oranges b    5  8  2  5  9  9
Puppies c    7  6  0  7  8  3
Ducks   d    6  5  0  1  6  0

df2 = df.rename_axis('baz', axis=1)
print (df2)
baz                        A  B  C  D  E  F
index name 1 index name 1                  
Apples       a             5  4  0  5  2  2
Oranges      b             5  8  2  5  9  9
Puppies      c             7  6  0  7  8  3
Ducks        d             6  5  0  1  6  0

df2 = df.rename_axis(index=('foo','bar'), columns='baz')
print (df2)
baz          A  B  C  D  E  F
foo     bar                  
Apples  a    5  4  0  5  2  2
Oranges b    5  8  2  5  9  9
Puppies c    7  6  0  7  8  3
Ducks   d    6  5  0  1  6  0

Removing index and columns names means set it to None:

Copydf2 = df.rename_axis(index=(None,None), columns=None)
print (df2)

           A  B  C  D  E  F
Apples  a  6  9  9  5  4  6
Oranges b  2  6  7  4  3  5
Puppies c  6  3  6  3  5  1
Ducks   d  4  9  1  3  0  5

For MultiIndex in index and columns is necessary working with .names instead .name and set by list or tuples:

Copymux1 = pd.MultiIndex.from_arrays([['Apples', 'Oranges', 'Puppies', 'Ducks'],
                                  list('abcd')], 
                                  names=['index name 1','index name 1'])


mux2 = pd.MultiIndex.from_product([list('ABC'),
                                  list('XY')], 
                                  names=['col name 1','col name 2'])

df = pd.DataFrame(np.random.randint(10, size=(4,6)), index=mux1, columns=mux2)
print (df)
col name 1                 A     B     C   
col name 2                 X  Y  X  Y  X  Y
index name 1 index name 1                  
Apples       a             2  9  4  7  0  3
Oranges      b             9  0  6  0  9  4
Puppies      c             2  4  6  1  4  4
Ducks        d             6  6  7  1  2  8

Plural is necessary for check/set values:

Copyprint (df.index.name)
None

print (df.columns.name)
None

print (df.index.names)
['index name 1', 'index name 1']

print (df.columns.names)
['col name 1', 'col name 2']

Copydf1 = df.rename_axis(('foo','bar'))
print (df1)
col name 1   A     B     C   
col name 2   X  Y  X  Y  X  Y
foo     bar                  
Apples  a    2  9  4  7  0  3
Oranges b    9  0  6  0  9  4
Puppies c    2  4  6  1  4  4
Ducks   d    6  6  7  1  2  8

df2 = df.rename_axis(('baz','bak'), axis=1)
print (df2)
baz                        A     B     C   
bak                        X  Y  X  Y  X  Y
index name 1 index name 1                  
Apples       a             2  9  4  7  0  3
Oranges      b             9  0  6  0  9  4
Puppies      c             2  4  6  1  4  4
Ducks        d             6  6  7  1  2  8

df2 = df.rename_axis(index=('foo','bar'), columns=('baz','bak'))
print (df2)
baz          A     B     C   
bak          X  Y  X  Y  X  Y
foo     bar                  
Apples  a    2  9  4  7  0  3
Oranges b    9  0  6  0  9  4
Puppies c    2  4  6  1  4  4
Ducks   d    6  6  7  1  2  8

Removing index and columns names means set it to None:

Copydf2 = df.rename_axis(index=(None,None), columns=(None,None))
print (df2)

           A     B     C   
           X  Y  X  Y  X  Y
Apples  a  2  0  2  5  2  0
Oranges b  1  7  5  5  4  8
Puppies c  2  4  6  3  6  5
Ducks   d  9  6  3  9  7  0

And @Jeff solution:

 
🌐
Spark By {Examples}
sparkbyexamples.com › home › pandas › pandas set index name to dataframe
Pandas Set Index Name to DataFrame - Spark By {Examples}
December 4, 2024 - Use pandas.DataFrame.rename_axis() to set the index name/title, in order to get the index use DataFrame.index.name property and the same could be used to
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.DataFrame.set_index.html
pandas.DataFrame.set_index — pandas 3.0.3 documentation
Set the DataFrame index (row labels) using one or more existing columns or arrays (of the correct length).
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.Index.name.html
pandas.Index.name — pandas 3.0.3 documentation
Able to set new names partially and by level. ... Corresponding Series property. ... >>> idx = pd.Index([1, 2, 3], name="x") >>> idx Index([1, 2, 3], dtype='int64', name='x') >>> idx.name 'x'
🌐
GeeksforGeeks
geeksforgeeks.org › pandas › pandas-dataframe-rename-index
Pandas Dataframe Rename Index - GeeksforGeeks
July 23, 2025 - Name Age Gender Salary Row1 John ... of a Pandas DataFrame, focusing on the rename_axis() method, direct assignment, the set_index() method, and multi-level indexing....
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.MultiIndex.names.html
pandas.MultiIndex.names — pandas 3.0.3 documentation
This attribute provides access to the names of the levels in a MultiIndex. The names are stored as a FrozenList, which is an immutable list-like container. Each name corresponds to a level in the MultiIndex, and can be used to identify or manipulate the levels individually.
Find elsewhere
🌐
Spark By {Examples}
sparkbyexamples.com › home › pandas › pandas set_index() – set index to dataframe
Pandas set_index() - Set Index to DataFrame - Spark By {Examples}
December 12, 2024 - pandas.DataFrame.set_index() is used to set the index to pandas DataFrame. By using set_index() method you can set the list of values, existing pandas
🌐
scikit-learn
scikit-learn.org › stable › modules › model_evaluation.html
3.4. Metrics and scoring: quantifying the quality of predictions — scikit-learn 1.9.0 documentation
The jaccard_score function computes the average of Jaccard similarity coefficients, also called the Jaccard index, between pairs of label sets.
🌐
Astral
docs.astral.sh › uv › concepts › projects › dependencies
Managing dependencies | uv
April 21, 2026 - For example, if a project uses setuptools as its build backend, it should declare setuptools as a build dependency: ... [project] name = "pandas" version = "0.1.0" [build-system] requires = ["setuptools>=42"] build-backend = "setuptools.build_meta"
🌐
Data Science Dojo
discuss.datasciencedojo.com › python
How can you assign a name to the index of a Pandas Series in Python? - Python - Data Science Dojo Discussions
February 17, 2023 - I was exploring ways to give a name to the index of a series object and came across a method that uses the name attribute of the series index to change its name. Here is the code I found: I encountered this issue while…
🌐
Pandas
pandas.pydata.org › pandas-docs › version › 2.1 › reference › api › pandas.Index.set_names.html
pandas.Index.set_names — pandas 2.1.4 documentation
>>> idx = pd.Index([1, 2, 3, 4]) >>> idx Index([1, 2, 3, 4], dtype='int64') >>> idx.set_names('quarter') Index([1, 2, 3, 4], dtype='int64', name='quarter')
🌐
Core Zone
visorterritoriosindigenas.regionloreto.gob.pe › home › news › setting index in pandas dataframe: a practical guide
Setting Index In Pandas DataFrame: A Practical Guide
January 6, 2026 - Ever found yourself wrestling with a Pandas DataFrame and wishing you could just, like, set things right with the index? Well, you’re in the right place! In this guide, we’re going to dive deep into the set_index() method in Pandas. Trust ...
🌐
Pandas
pandas.pydata.org › docs › reference › api › pandas.Series.name.html
pandas.Series.name — pandas 3.0.3 documentation
Corresponding Index property. ... The Series name can be set initially when calling the constructor.
🌐
Note.nkmk.me
note.nkmk.me › home › python › pandas
pandas: Rename column/index names of DataFrame | note.nkmk.me
August 7, 2023 - You can rename (change) column and/or index names in a pandas.DataFrame by using the rename(), add_prefix(), add_suffix(), set_axis() methods or by directly updating the columns and/or index attributes.
🌐
Medium
medium.com › @petehouston › set-index-for-dataframe-in-pandas-55400e306e42
Set index for DataFrame in pandas | by Pete Houston | Medium
March 20, 2019 - >>> df = df.drop(['id'], axis=1) >>> df name job score id 1 'Pete Houston' 'Software Engineer' 92 2 'John Wick' 'Assassin' 95 3 'Bruce Wayne' 'Batman' 99 4 'Clark Kent' 'Superman' 96 · Okay, it looks very fine-tuning for now. It is very common to see data engineers to set index for DataFrame in pandas; so, a function is made to help with this situation, set_index().
🌐
Note.nkmk.me
note.nkmk.me › home › python › pandas
pandas: Set a column as the DataFrame index with set_index() | note.nkmk.me
January 26, 2024 - MultiIndex / advanced indexing — pandas 2.2.0 documentation · By specifying a list of column labels in the first argument (keys), multiple columns are assigned as a MultiIndex. print(df.set_index(['state', 'name'])) # age point # state name # NY Alice 24 64 # CA Bob 42 92 # Charlie 18 70 # TX Dave 68 70 # CA Ellen 24 88 # NY Frank 30 57
🌐
NumPy
numpy.org › doc › stable › user › absolute_beginners.html
NumPy: the absolute basics for beginners — NumPy v2.4 Manual
It’s simple to read in a CSV that contains existing information. The best and easiest way to do this is to use Pandas.
🌐
Pandas
pandas.pydata.org › docs › reference › indexing.html
Index objects — pandas 3.0.3 documentation
Many of these methods or variants thereof are available on the objects that contain an index (Series/DataFrame) and those should most likely be used before calling these methods directly · Index([data, dtype, copy, name, tupleize_cols])
🌐
Codegive
codegive.com › blog › pandas_set_index.php
Mastering <code>pandas set index</code>: Unlock Data Power for Faster Analysis & Clarity!
To set a column as the index in pandas, use the df.set_index('column_name') method. This creates a new DataFrame with the specified column moved to the index, which can improve data access and organization.