@@ -1031,7 +1031,7 @@ def __setitem__(self, key, value):
1031
1031
try :
1032
1032
self ._where (~ key , value , inplace = True )
1033
1033
except InvalidIndexError :
1034
- self ._set_values ( key . astype ( np . bool_ ), value )
1034
+ self .iloc [ key ] = value
1035
1035
return
1036
1036
1037
1037
else :
@@ -1049,8 +1049,10 @@ def _set_with_engine(self, key, value):
1049
1049
def _set_with (self , key , value ):
1050
1050
# other: fancy integer or otherwise
1051
1051
if isinstance (key , slice ):
1052
+ # extract_array so that if we set e.g. ser[-5:] = ser[:5]
1053
+ # we get the first five values, and not 5 NaNs
1052
1054
indexer = self .index ._convert_slice_indexer (key , kind = "getitem" )
1053
- return self ._set_values ( indexer , value )
1055
+ self .iloc [ indexer ] = extract_array ( value , extract_numpy = True )
1054
1056
1055
1057
else :
1056
1058
assert not isinstance (key , tuple )
@@ -1068,25 +1070,11 @@ def _set_with(self, key, value):
1068
1070
# should be caught by the is_bool_indexer check in __setitem__
1069
1071
if key_type == "integer" :
1070
1072
if not self .index ._should_fallback_to_positional ():
1071
- self ._set_labels ( key , value )
1073
+ self .loc [ key ] = value
1072
1074
else :
1073
- self ._set_values ( key , value )
1075
+ self .iloc [ key ] = value
1074
1076
else :
1075
- self ._set_labels (key , value )
1076
-
1077
- def _set_labels (self , key , value ):
1078
- key = com .asarray_tuplesafe (key )
1079
- indexer : np .ndarray = self .index .get_indexer (key )
1080
- mask = indexer == - 1
1081
- if mask .any ():
1082
- raise ValueError (f"{ key [mask ]} not contained in the index" )
1083
- self ._set_values (indexer , value )
1084
-
1085
- def _set_values (self , key , value ):
1086
- if isinstance (key , Series ):
1087
- key = key ._values
1088
- self ._mgr = self ._mgr .setitem (indexer = key , value = value )
1089
- self ._maybe_update_cacher ()
1077
+ self .loc [key ] = value
1090
1078
1091
1079
def _set_value (self , label , value , takeable : bool = False ):
1092
1080
"""
0 commit comments