@@ -987,12 +987,32 @@ def _constructor(self):
987
987
return MultiIndex .from_tuples
988
988
989
989
@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
+
991
1002
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 )
994
1005
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
+ )
996
1016
result ._cache = self ._cache .copy ()
997
1017
result ._cache .pop ("levels" , None ) # GH32669
998
1018
return result
@@ -1044,25 +1064,20 @@ def copy(
1044
1064
``deep``, but if ``deep`` is passed it will attempt to deepcopy.
1045
1065
This could be potentially expensive on large MultiIndex objects.
1046
1066
"""
1047
- names = self ._validate_names (name = name , names = names , deep = deep )
1048
1067
if deep :
1049
1068
from copy import deepcopy
1050
1069
1051
1070
if levels is None :
1052
1071
levels = deepcopy (self .levels )
1053
1072
if codes is None :
1054
1073
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 (
1061
1076
levels = levels ,
1077
+ name = name ,
1062
1078
codes = codes ,
1063
1079
names = names ,
1064
1080
sortorder = self .sortorder ,
1065
- verify_integrity = False ,
1066
1081
_set_identity = _set_identity ,
1067
1082
)
1068
1083
0 commit comments