@@ -1278,31 +1278,37 @@ def _set_names(self, values, level=None):
1278
1278
1279
1279
def set_names (self , names , level = None , inplace = False ):
1280
1280
"""
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.
1282
1284
1283
1285
Parameters
1284
1286
----------
1285
- names : str or sequence
1287
+ names : int, str, list-like, optional
1286
1288
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.
1292
1295
1293
1296
Returns
1294
1297
-------
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
1296
1304
1297
1305
Examples
1298
1306
--------
1299
1307
>>> pd.Index([1, 2, 3, 4]).set_names('foo')
1300
1308
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')
1303
1309
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')],
1306
1312
... names=['foo', 'bar'])
1307
1313
>>> idx.set_names(['baz', 'quz'])
1308
1314
MultiIndex(levels=[[1, 2], ['one', 'two']],
@@ -1312,10 +1318,6 @@ def set_names(self, names, level=None, inplace=False):
1312
1318
MultiIndex(levels=[[1, 2], ['one', 'two']],
1313
1319
labels=[[0, 0, 1, 1], [0, 1, 0, 1]],
1314
1320
names=['baz', 'bar'])
1315
-
1316
- See also
1317
- --------
1318
- rename : able to set new names without level
1319
1321
"""
1320
1322
1321
1323
from .multi import MultiIndex
@@ -1324,7 +1326,8 @@ def set_names(self, names, level=None, inplace=False):
1324
1326
1325
1327
if level is not None and not is_list_like (level ) and is_list_like (
1326
1328
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 )
1328
1331
1329
1332
if not is_list_like (names ) and level is None and self .nlevels > 1 :
1330
1333
raise TypeError ("Must pass list-like as `names`." )
@@ -1344,29 +1347,36 @@ def set_names(self, names, level=None, inplace=False):
1344
1347
1345
1348
def rename (self , name , inplace = False ):
1346
1349
"""
1347
- Set new names on index. Defaults to returning new index .
1350
+ Alter Index or MultiIndex name .
1348
1351
1352
+ Able to set new names without level. Defaults to returning new index.
1349
1353
Length of names must match number of levels in MultiIndex.
1350
1354
1351
1355
Parameters
1352
1356
----------
1353
- name : str or list
1357
+ name : int, str, list-like, optional
1354
1358
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.
1357
1362
1358
1363
Returns
1359
1364
-------
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
1361
1371
1362
1372
Examples
1363
1373
--------
1364
1374
>>> idx = pd.Index([1, 2, 3, 4], name='foo')
1365
1375
>>> idx.rename('bar')
1366
1376
Int64Index([1, 2, 3, 4], dtype='int64', name='bar')
1367
1377
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')],
1370
1380
... names=['foo', 'bar'])
1371
1381
>>> idx.rename(['bar', None])
1372
1382
MultiIndex(levels=[[1, 2], ['one', 'two']],
@@ -1375,10 +1385,6 @@ def rename(self, name, inplace=False):
1375
1385
>>> idx.rename(['bar'])
1376
1386
Traceback (most recent call last):
1377
1387
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
1382
1388
"""
1383
1389
return self .set_names ([name ], inplace = inplace )
1384
1390
0 commit comments