@@ -987,12 +987,32 @@ def _constructor(self):
987987 return MultiIndex .from_tuples
988988
989989 @Appender (Index ._shallow_copy .__doc__ )
990- def _shallow_copy (self , values = None , ** kwargs ):
990+ def _shallow_copy (
991+ self ,
992+ values = None ,
993+ name = None ,
994+ levels = None ,
995+ codes = None ,
996+ sortorder = None ,
997+ names = None ,
998+ _set_identity : bool = True ,
999+ ):
1000+ names = self ._validate_names (name = name , names = names )
1001+
9911002 if values is not None :
992- names = kwargs . pop ( "names" , kwargs . pop ( "name" , self . names ))
993- return MultiIndex .from_tuples (values , names = names , ** kwargs )
1003+ assert levels is None and codes is None
1004+ return MultiIndex .from_tuples (values , sortorder = sortorder , names = names )
9941005
995- result = self .copy (** kwargs )
1006+ levels = levels if levels is not None else self ._levels
1007+ codes = codes if codes is not None else self ._codes
1008+
1009+ result = MultiIndex (
1010+ levels = levels ,
1011+ codes = codes ,
1012+ sortorder = sortorder ,
1013+ names = names ,
1014+ _set_identity = _set_identity ,
1015+ )
9961016 result ._cache = self ._cache .copy ()
9971017 result ._cache .pop ("levels" , None ) # GH32669
9981018 return result
@@ -1044,25 +1064,20 @@ def copy(
10441064 ``deep``, but if ``deep`` is passed it will attempt to deepcopy.
10451065 This could be potentially expensive on large MultiIndex objects.
10461066 """
1047- names = self ._validate_names (name = name , names = names , deep = deep )
10481067 if deep :
10491068 from copy import deepcopy
10501069
10511070 if levels is None :
10521071 levels = deepcopy (self .levels )
10531072 if codes is None :
10541073 codes = deepcopy (self .codes )
1055- else :
1056- if levels is None :
1057- levels = self .levels
1058- if codes is None :
1059- codes = self .codes
1060- return MultiIndex (
1074+
1075+ return self ._shallow_copy (
10611076 levels = levels ,
1077+ name = name ,
10621078 codes = codes ,
10631079 names = names ,
10641080 sortorder = self .sortorder ,
1065- verify_integrity = False ,
10661081 _set_identity = _set_identity ,
10671082 )
10681083
0 commit comments