@@ -1278,31 +1278,37 @@ def _set_names(self, values, level=None):
12781278
12791279 def set_names (self , names , level = None , inplace = False ):
12801280 """
1281- Set new names on index. Defaults to returning new index.
1281+ Alter Index or MultiIndex name or level.
1282+
1283+ Able to set new names partially and by level.
12821284
12831285 Parameters
12841286 ----------
1285- names : str or sequence
1287+ names : int, str, list-like, optional
12861288 Name(s) to set.
1287- level : int, level name, or sequence of int/level names (default None)
1288- If the index is a MultiIndex (hierarchical), level(s) to set (None
1289- for all levels). Otherwise level must be None.
1290- inplace : bool
1291- If True, mutates in place.
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.
1292+ inplace : boolean, default False
1293+ Modifies the object directly, instead of creating a new Index or
1294+ MultiIndex.
12921295
12931296 Returns
12941297 -------
1295- new index (of same type and class...etc) [if inplace, returns None]
1298+ renamed : Index, MultiIndex or None
1299+ The same type as the caller or None if inplace is True.
1300+
1301+ See also
1302+ --------
1303+ Index.rename : Able to set new names without level
12961304
12971305 Examples
12981306 --------
12991307 >>> pd.Index([1, 2, 3, 4]).set_names('foo')
13001308 Int64Index([1, 2, 3, 4], dtype='int64', name='foo')
1301- >>> pd.Index([1, 2, 3, 4]).set_names(['foo'])
1302- Int64Index([1, 2, 3, 4], dtype='int64', name='foo')
13031309
1304- >>> idx = pd.MultiIndex.from_tuples([(1, u 'one'), (1, u 'two'),
1305- ... (2, u 'one'), (2, u 'two')],
1310+ >>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
1311+ ... (2, 'one'), (2, 'two')],
13061312 ... names=['foo', 'bar'])
13071313 >>> idx.set_names(['baz', 'quz'])
13081314 MultiIndex(levels=[[1, 2], ['one', 'two']],
@@ -1312,10 +1318,6 @@ def set_names(self, names, level=None, inplace=False):
13121318 MultiIndex(levels=[[1, 2], ['one', 'two']],
13131319 labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
13141320 names=['baz', 'bar'])
1315-
1316- See also
1317- --------
1318- rename : able to set new names without level
13191321 """
13201322
13211323 from .multi import MultiIndex
@@ -1324,7 +1326,8 @@ def set_names(self, names, level=None, inplace=False):
13241326
13251327 if level is not None and not is_list_like (level ) and is_list_like (
13261328 names ):
1327- raise TypeError ("Names must be a string" )
1329+ msg = "Length of names must match number of levels in MultiIndex."
1330+ raise TypeError (msg )
13281331
13291332 if not is_list_like (names ) and level is None and self .nlevels > 1 :
13301333 raise TypeError ("Must pass list-like as `names`." )
@@ -1344,29 +1347,36 @@ def set_names(self, names, level=None, inplace=False):
13441347
13451348 def rename (self , name , inplace = False ):
13461349 """
1347- Set new names on index. Defaults to returning new index .
1350+ Alter Index or MultiIndex name .
13481351
1352+ Able to set new names without level. Defaults to returning new index.
13491353 Length of names must match number of levels in MultiIndex.
13501354
13511355 Parameters
13521356 ----------
1353- name : str or list
1357+ name : int, str, list-like, optional
13541358 Name(s) to set.
1355- inplace : bool
1356- If True, mutates in place.
1359+ inplace : boolean, default False
1360+ Modifies the object directly, instead of creating a new Index or
1361+ MultiIndex.
13571362
13581363 Returns
13591364 -------
1360- new index (of same type and class...etc) [if inplace, returns None]
1365+ renamed : Index, MultiIndex or None
1366+ The same type as the caller or None if inplace is True.
1367+
1368+ See also
1369+ --------
1370+ Index.set_names : Able to set new names partially and by level
13611371
13621372 Examples
13631373 --------
13641374 >>> idx = pd.Index([1, 2, 3, 4], name='foo')
13651375 >>> idx.rename('bar')
13661376 Int64Index([1, 2, 3, 4], dtype='int64', name='bar')
13671377
1368- >>> idx = pd.MultiIndex.from_tuples([(1, u 'one'), (1, u 'two'),
1369- ... (2, u 'one'), (2, u 'two')],
1378+ >>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
1379+ ... (2, 'one'), (2, 'two')],
13701380 ... names=['foo', 'bar'])
13711381 >>> idx.rename(['bar', None])
13721382 MultiIndex(levels=[[1, 2], ['one', 'two']],
@@ -1375,10 +1385,6 @@ def rename(self, name, inplace=False):
13751385 >>> idx.rename(['bar'])
13761386 Traceback (most recent call last):
13771387 ValueError: Length of names must match number of levels in MultiIndex.
1378-
1379- See also
1380- --------
1381- set_names : able to set new names partially and by level
13821388 """
13831389 return self .set_names ([name ], inplace = inplace )
13841390
0 commit comments