@@ -158,12 +158,44 @@ def test_loc_getitem_series(self):
158158 result = x .loc [[1 , 3 ]]
159159 tm .assert_series_equal (result , expected )
160160
161+ # GH15424
162+ y1 = Series ([1 , 3 ], index = [1 , 2 ])
163+ result = x .loc [y1 ]
164+ tm .assert_series_equal (result , expected )
165+
161166 empty = Series (data = [], dtype = np .float64 )
162167 expected = Series ([], index = MultiIndex (
163168 levels = index .levels , labels = [[], []], dtype = np .float64 ))
164169 result = x .loc [empty ]
165170 tm .assert_series_equal (result , expected )
166171
172+ def test_loc_getitem_dataframe (self ):
173+ # passing a dataframe as a key with a MultiIndex
174+ index = MultiIndex .from_product ([[1 , 2 , 3 ], ['A' , 'B' , 'C' ]])
175+ x = Series (index = index , data = range (9 ), dtype = np .float64 )
176+ idx_keys = [(1 , 'A' ), (2 , 'C' ), (3 , 'B' )]
177+ y = DataFrame (idx_keys )
178+ expected = Series (
179+ data = [0 , 5 , 7 ],
180+ index = MultiIndex .from_tuples (idx_keys ),
181+ dtype = np .float64 )
182+ result = x .loc [y ]
183+ tm .assert_series_equal (result , expected )
184+
185+ result = x .loc [idx_keys ]
186+ tm .assert_series_equal (result , expected )
187+
188+ # index should not matter at all:
189+ y1 = DataFrame (idx_keys , index = [1 , 2 , 7 ])
190+ result = x .loc [y1 ]
191+ tm .assert_series_equal (result , expected )
192+
193+ empty = DataFrame (data = [], dtype = np .float64 )
194+ expected = Series ([], index = MultiIndex (
195+ levels = index .levels , labels = [[], []], dtype = np .float64 ))
196+ result = x .loc [empty ]
197+ tm .assert_series_equal (result , expected )
198+
167199 def test_iloc_getitem_multiindex (self ):
168200 mi_labels = DataFrame (np .random .randn (4 , 3 ),
169201 columns = [['i' , 'i' , 'j' ], ['A' , 'A' , 'B' ]],
0 commit comments