@@ -72,8 +72,8 @@ class MultiIndex(Index):
7272 Examples 
7373 --------- 
7474 A new ``MultiIndex`` is typically constructed using one of the helper 
75-  methods :meth:`MultiIndex.from_arrays`` , :meth:`MultiIndex.from_product` ` 
76-  and :meth:`MultiIndex.from_tuples`` . For example (using ``.from_arrays``): 
75+  methods :meth:`MultiIndex.from_arrays`, :meth:`MultiIndex.from_product` 
76+  and :meth:`MultiIndex.from_tuples`. For example (using ``.from_arrays``): 
7777
7878 >>> arrays = [[1, 1, 2, 2], ['red', 'blue', 'red', 'blue']] 
7979 >>> pd.MultiIndex.from_arrays(arrays, names=('number', 'color')) 
@@ -1985,13 +1985,9 @@ def get_loc(self, key, method=None):
19851985 Get location for a label or a tuple of labels as an integer, slice or 
19861986 boolean mask. 
19871987
1988-  Note that the key cannot be a slice, list of same-level labels, 
1989-  a boolean mask, or a sequence of such. If you want that, use 
1990-  :meth:`get_locs` instead. 
1991- 
19921988 Parameters 
19931989 ---------- 
1994-  key : label or tuple of labels 
1990+  key : label or tuple of labels (one for each level)  
19951991 method : None 
19961992
19971993 Returns 
@@ -2003,17 +1999,24 @@ def get_loc(self, key, method=None):
20031999 Examples 
20042000 --------- 
20052001 >>> mi = pd.MultiIndex.from_arrays([list('abb'), list('def')]) 
2002+ 
20062003 >>> mi.get_loc('b') 
20072004 slice(1, 3, None) 
2005+ 
20082006 >>> mi.get_loc(('b', 'e')) 
20092007 1 
20102008
2009+  Notes 
2010+  ------ 
2011+  The key cannot be a slice, list of same-level labels, a boolean mask, 
2012+  or a sequence of such. If you want to use those, use :meth:`get_locs` 
2013+  instead. 
2014+ 
20112015 See also 
20122016 -------- 
20132017 Index.get_loc : get_loc method for (single-level) index. 
2014-  get_locs : Given a tuple of slices/lists/labels/boolean indexer to a 
2015-  level-wise spec, produce an indexer to extract those 
2016-  locations. 
2018+  get_locs : Get location for a label/slice/list/mask or a sequence of 
2019+  such. 
20172020 """ 
20182021 if  method  is  not None :
20192022 raise  NotImplementedError ('only the default get_loc method is ' 
@@ -2122,7 +2125,9 @@ def get_loc_level(self, key, level=0, drop_level=True):
21222125
21232126 See Also 
21242127 --------- 
2125-  MultiIndex.get_loc : Get location for a label or a tuple of labels. 
2128+  MultiIndex.get_loc : Get location for a label or a tuple of labels. 
2129+  MultiIndex.get_locs : Get location for a label/slice/list/mask or a 
2130+  sequence of such 
21262131 """ 
21272132
21282133 def  maybe_droplevels (indexer , levels , drop_level ):
@@ -2332,14 +2337,14 @@ def convert_indexer(start, stop, step, indexer=indexer, labels=labels):
23322337 j  =  labels .searchsorted (loc , side = 'right' )
23332338 return  slice (i , j )
23342339
2335-  def  get_locs (self , tup ):
2340+  def  get_locs (self , seq ):
23362341 """ 
23372342 Get location for a given label/slice/list/mask or a sequence of such as 
23382343 a integer, slice or boolean mask. 
23392344
23402345 Parameters 
23412346 ---------- 
2342-  key  : label/slice/list/mask or a sequence of such. 
2347+  seq  : label/slice/list/mask or a sequence of such. 
23432348
23442349 Returns 
23452350 ------- 
@@ -2365,7 +2370,7 @@ def get_locs(self, tup):
23652370 """ 
23662371
23672372 # must be lexsorted to at least as many levels 
2368-  true_slices  =  [i  for  (i , s ) in  enumerate (is_true_slices (tup )) if  s ]
2373+  true_slices  =  [i  for  (i , s ) in  enumerate (is_true_slices (seq )) if  s ]
23692374 if  true_slices  and  true_slices [- 1 ] >=  self .lexsort_depth :
23702375 raise  UnsortedIndexError ('MultiIndex slicing requires the index ' 
23712376 'to be lexsorted: slicing on levels {0}, ' 
@@ -2398,7 +2403,7 @@ def _update_indexer(idxr, indexer=indexer):
23982403 return  indexer 
23992404 return  indexer  &  idxr 
24002405
2401-  for  i , k  in  enumerate (tup ):
2406+  for  i , k  in  enumerate (seq ):
24022407
24032408 if  is_bool_indexer (k ):
24042409 # a boolean indexer, must be the same length! 
0 commit comments