@@ -158,12 +158,44 @@ def test_loc_getitem_series(self):
158
158
result = x .loc [[1 , 3 ]]
159
159
tm .assert_series_equal (result , expected )
160
160
161
+ # GH15424
162
+ y1 = Series ([1 , 3 ], index = [1 , 2 ])
163
+ result = x .loc [y1 ]
164
+ tm .assert_series_equal (result , expected )
165
+
161
166
empty = Series (data = [], dtype = np .float64 )
162
167
expected = Series ([], index = MultiIndex (
163
168
levels = index .levels , labels = [[], []], dtype = np .float64 ))
164
169
result = x .loc [empty ]
165
170
tm .assert_series_equal (result , expected )
166
171
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
+
167
199
def test_iloc_getitem_multiindex (self ):
168
200
mi_labels = DataFrame (np .random .randn (4 , 3 ),
169
201
columns = [['i' , 'i' , 'j' ], ['A' , 'A' , 'B' ]],
0 commit comments