Skip to content

Commit 2ee70dc

Browse files
committed
fix
1 parent 522cd97 commit 2ee70dc

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

pandas/core/indexes/base.py

+30-27
Original file line numberDiff line numberDiff line change
@@ -1284,40 +1284,43 @@ def set_names(self, names, level=None, inplace=False):
12841284
12851285
Parameters
12861286
----------
1287-
names : int, str, list-like, optional
1287+
names : label or list of labels
12881288
Name(s) to set.
1289-
level : int, str, list-like, optional, default None
1290-
If the index is a MultiIndex(hierarchical), level(s) to set (None
1291-
for all levels). Otherwise level must be None.
1289+
level : int, str or list of labels, optional
1290+
If the index is a MultiIndex, level(s) to set (None for all
1291+
levels). Otherwise level must be None.
12921292
inplace : boolean, default False
12931293
Modifies the object directly, instead of creating a new Index or
12941294
MultiIndex.
12951295
12961296
Returns
12971297
-------
1298-
renamed : Index, MultiIndex or None
1298+
Index
12991299
The same type as the caller or None if inplace is True.
13001300
1301-
See also
1301+
See Also
13021302
--------
1303-
Index.rename : Able to set new names without level
1303+
Index.rename : Able to set new names without level.
13041304
13051305
Examples
13061306
--------
1307-
>>> pd.Index([1, 2, 3, 4]).set_names('foo')
1308-
Int64Index([1, 2, 3, 4], dtype='int64', name='foo')
1307+
>>> idx = pd.Index([1, 2, 3, 4])
1308+
>>> idx
1309+
Int64Index([1, 2, 3, 4], dtype='int64')
1310+
>>> idx.set_names('quarter')
1311+
Int64Index([1, 2, 3, 4], dtype='int64', name='quarter')
13091312
13101313
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
13111314
... (2, 'one'), (2, 'two')],
1312-
... names=['foo', 'bar'])
1313-
>>> idx.set_names(['baz', 'quz'])
1315+
... names=['year', 'company'])
1316+
>>> idx.set_names(['term', 'corporation'])
13141317
MultiIndex(levels=[[1, 2], ['one', 'two']],
13151318
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
1316-
names=['baz', 'quz'])
1317-
>>> idx.set_names('baz', level=0)
1319+
names=['term', 'corporation'])
1320+
>>> idx.set_names('association', level=1)
13181321
MultiIndex(levels=[[1, 2], ['one', 'two']],
13191322
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
1320-
names=['baz', 'bar'])
1323+
names=['year', 'association'])
13211324
"""
13221325

13231326
from .multi import MultiIndex
@@ -1326,7 +1329,7 @@ def set_names(self, names, level=None, inplace=False):
13261329

13271330
if level is not None and not is_list_like(level) and is_list_like(
13281331
names):
1329-
msg = "Length of names must match number of levels in MultiIndex."
1332+
msg = "Names must be a string when one level is provided."
13301333
raise TypeError(msg)
13311334

13321335
if not is_list_like(names) and level is None and self.nlevels > 1:
@@ -1354,37 +1357,37 @@ def rename(self, name, inplace=False):
13541357
13551358
Parameters
13561359
----------
1357-
name : int, str, list-like, optional
1360+
name : label or list of labels
13581361
Name(s) to set.
13591362
inplace : boolean, default False
13601363
Modifies the object directly, instead of creating a new Index or
13611364
MultiIndex.
13621365
13631366
Returns
13641367
-------
1365-
renamed : Index, MultiIndex or None
1368+
Index
13661369
The same type as the caller or None if inplace is True.
13671370
1368-
See also
1371+
See Also
13691372
--------
1370-
Index.set_names : Able to set new names partially and by level
1373+
Index.set_names : Able to set new names partially and by level.
13711374
13721375
Examples
13731376
--------
1374-
>>> idx = pd.Index([1, 2, 3, 4], name='foo')
1375-
>>> idx.rename('bar')
1376-
Int64Index([1, 2, 3, 4], dtype='int64', name='bar')
1377+
>>> idx = pd.Index(['A', 'C', 'A', 'B'], name='score')
1378+
>>> idx.rename('grade')
1379+
Index(['A', 'C', 'A', 'B'], dtype='object', name='grade')
13771380
13781381
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
13791382
... (2, 'one'), (2, 'two')],
1380-
... names=['foo', 'bar'])
1381-
>>> idx.rename(['bar', None])
1383+
... names=['year', 'company'])
1384+
>>> idx.rename(['term', 'corporation'])
13821385
MultiIndex(levels=[[1, 2], ['one', 'two']],
13831386
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
1384-
names=['bar', None])
1385-
>>> idx.rename(['bar'])
1387+
names=['term', 'corporation'])
1388+
>>> idx.rename('term')
13861389
Traceback (most recent call last):
1387-
ValueError: Length of names must match number of levels in MultiIndex.
1390+
TypeError: Must pass list-like as `names`.
13881391
"""
13891392
return self.set_names([name], inplace=inplace)
13901393

pandas/tests/indexes/multi/test_get_set.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ def test_set_levels_labels_names_bad_input(idx):
360360
with tm.assert_raises_regex(ValueError, 'Length of names'):
361361
idx.set_names(names[0], level=[0, 1])
362362

363-
with tm.assert_raises_regex(TypeError, 'Length of names'):
363+
with tm.assert_raises_regex(TypeError, 'Names must be a'):
364364
idx.set_names(names, level=0)
365365

366366

0 commit comments

Comments
 (0)