File tree 2 files changed +8
-10
lines changed
2 files changed +8
-10
lines changed Original file line number Diff line number Diff line change @@ -3713,7 +3713,8 @@ def __delitem__(self, key) -> None:
3713
3713
# If the above loop ran and didn't delete anything because
3714
3714
# there was no match, this call should raise the appropriate
3715
3715
# exception:
3716
- self ._mgr .delete (key )
3716
+ loc = self .axes [- 1 ].get_loc (key )
3717
+ self ._mgr .idelete (loc )
3717
3718
3718
3719
# delete from the caches
3719
3720
try :
Original file line number Diff line number Diff line change @@ -1007,12 +1007,10 @@ def iget(self, i: int) -> "SingleBlockManager":
1007
1007
self .axes [1 ],
1008
1008
)
1009
1009
1010
- def delete (self , item ):
1010
+ def idelete (self , indexer ):
1011
1011
"""
1012
- Delete selected item (items if non-unique) in-place.
1012
+ Delete selected locations in-place (new block and array, same BlockManager)
1013
1013
"""
1014
- indexer = self .items .get_loc (item )
1015
-
1016
1014
is_deleted = np .zeros (self .shape [0 ], dtype = np .bool_ )
1017
1015
is_deleted [indexer ] = True
1018
1016
ref_loc_offset = - is_deleted .cumsum ()
@@ -1606,15 +1604,14 @@ def _consolidate_check(self):
1606
1604
def _consolidate_inplace (self ):
1607
1605
pass
1608
1606
1609
- def delete (self , item ):
1607
+ def idelete (self , indexer ):
1610
1608
"""
1611
- Delete single item from SingleBlockManager.
1609
+ Delete single location from SingleBlockManager.
1612
1610
1613
1611
Ensures that self.blocks doesn't become empty.
1614
1612
"""
1615
- loc = self .items .get_loc (item )
1616
- self ._block .delete (loc )
1617
- self .axes [0 ] = self .axes [0 ].delete (loc )
1613
+ self ._block .delete (indexer )
1614
+ self .axes [0 ] = self .axes [0 ].delete (indexer )
1618
1615
1619
1616
def fast_xs (self , loc ):
1620
1617
"""
You can’t perform that action at this time.
0 commit comments