@@ -1595,6 +1595,15 @@ def _get_slice_axis(self, slice_obj, axis=0):
1595
1595
else :
1596
1596
return self .obj .take (slice_obj , axis = axis , convert = False )
1597
1597
1598
+ def _get_list_axis (self , key_list , axis = 0 ):
1599
+
1600
+ # validate list bounds
1601
+ self ._is_valid_list_like (key_list , axis )
1602
+
1603
+ # force an actual list
1604
+ key_list = list (key_list )
1605
+ return self .obj .take (key_list , axis = axis , convert = False )
1606
+
1598
1607
def _getitem_axis (self , key , axis = 0 ):
1599
1608
1600
1609
if isinstance (key , slice ):
@@ -1606,26 +1615,18 @@ def _getitem_axis(self, key, axis=0):
1606
1615
return self ._getbool_axis (key , axis = axis )
1607
1616
1608
1617
# a single integer or a list of integers
1609
- else :
1610
-
1611
- if is_list_like_indexer (key ):
1612
-
1613
- # validate list bounds
1614
- self ._is_valid_list_like (key , axis )
1615
-
1616
- # force an actual list
1617
- key = list (key )
1618
- return self .obj .take (key , axis = axis , convert = False )
1618
+ elif is_list_like_indexer (key ):
1619
+ return self ._get_list_axis (key , axis = axis )
1619
1620
1620
- else :
1621
- key = self ._convert_scalar_indexer (key , axis )
1621
+ else :
1622
+ key = self ._convert_scalar_indexer (key , axis )
1622
1623
1623
- if not is_integer (key ):
1624
- raise TypeError ("Cannot index by location index with a "
1625
- "non-integer key" )
1624
+ if not is_integer (key ):
1625
+ raise TypeError ("Cannot index by location index with a "
1626
+ "non-integer key" )
1626
1627
1627
- # validate the location
1628
- self ._is_valid_integer (key , axis )
1628
+ # validate the location
1629
+ self ._is_valid_integer (key , axis )
1629
1630
1630
1631
return self ._get_loc (key , axis = axis )
1631
1632
0 commit comments