@@ -112,10 +112,12 @@ class Index(IndexOpsMixin, PandasObject):
112
112
dtype : NumPy dtype (default: object)
113
113
copy : bool
114
114
Make a copy of input ndarray
115
- name : object
115
+ name : object, optional
116
116
Name to be stored in the index
117
117
tupleize_cols : bool (default: True)
118
118
When True, attempt to create a MultiIndex if possible
119
+ names : sequence of objects, optional
120
+ Names for the index levels used when attempt to create a MultiIndex
119
121
120
122
Notes
121
123
-----
@@ -177,10 +179,15 @@ class Index(IndexOpsMixin, PandasObject):
177
179
str = accessor .AccessorProperty (strings .StringMethods )
178
180
179
181
def __new__ (cls , data = None , dtype = None , copy = False , name = None ,
180
- fastpath = False , tupleize_cols = True , ** kwargs ):
182
+ fastpath = False , tupleize_cols = True , names = None ,
183
+ ** kwargs ):
181
184
182
- if name is None and hasattr (data , 'name' ):
183
- name = data .name
185
+ if name is None :
186
+ if hasattr (data , 'name' ):
187
+ name = data .name
188
+ # extract `name` from `names` in case MultiIndex cannot be created
189
+ elif names :
190
+ name = names [0 ]
184
191
185
192
if fastpath :
186
193
return cls ._simple_new (data , name )
@@ -360,7 +367,7 @@ def __new__(cls, data=None, dtype=None, copy=False, name=None,
360
367
if all (isinstance (e , tuple ) for e in data ):
361
368
from .multi import MultiIndex
362
369
return MultiIndex .from_tuples (
363
- data , names = name or kwargs .get ('names' ))
370
+ data , names = names or kwargs .get ('names' ) or name )
364
371
# other iterable of some kind
365
372
subarr = _asarray_tuplesafe (data , dtype = object )
366
373
return Index (subarr , dtype = dtype , copy = copy , name = name , ** kwargs )
0 commit comments