@@ -197,6 +197,38 @@ def test_frame_mixed_depth_get():
197
197
tm .assert_series_equal (result , expected )
198
198
199
199
200
+ def test_frame_getitem_nan_multiindex (nulls_fixture ):
201
+ # GH#29751
202
+ # loc on a multiindex containing nan values
203
+ n = nulls_fixture # for code readability
204
+ cols = ["a" , "b" , "c" ]
205
+ df = DataFrame (
206
+ [[11 , n , 13 ], [21 , n , 23 ], [31 , n , 33 ], [41 , n , 43 ]],
207
+ columns = cols ,
208
+ dtype = "int64" ,
209
+ ).set_index (["a" , "b" ])
210
+
211
+ idx = (21 , n )
212
+ result = df .loc [:idx ]
213
+ expected = DataFrame (
214
+ [[11 , n , 13 ], [21 , n , 23 ]], columns = cols , dtype = "int64"
215
+ ).set_index (["a" , "b" ])
216
+ tm .assert_frame_equal (result , expected )
217
+
218
+ result = df .loc [idx :]
219
+ expected = DataFrame (
220
+ [[21 , n , 23 ], [31 , n , 33 ], [41 , n , 43 ]], columns = cols , dtype = "int64"
221
+ ).set_index (["a" , "b" ])
222
+ tm .assert_frame_equal (result , expected )
223
+
224
+ idx1 , idx2 = (21 , n ), (31 , n )
225
+ result = df .loc [idx1 :idx2 ]
226
+ expected = DataFrame (
227
+ [[21 , n , 23 ], [31 , n , 33 ]], columns = cols , dtype = "int64"
228
+ ).set_index (["a" , "b" ])
229
+ tm .assert_frame_equal (result , expected )
230
+
231
+
200
232
# ----------------------------------------------------------------------------
201
233
# test indexing of DataFrame with multi-level Index with duplicates
202
234
# ----------------------------------------------------------------------------
@@ -279,25 +311,3 @@ def test_loc_empty_multiindex():
279
311
result = df
280
312
expected = DataFrame ([1 , 2 , 3 , 4 ], index = index , columns = ["value" ])
281
313
tm .assert_frame_equal (result , expected )
282
-
283
-
284
- @pytest .mark .parametrize ("idx1,idx2" , [(0 , 1 ), (1 , 4 ), (1 , 3 )])
285
- def test_loc_nan_multiindex (nulls_fixture , idx1 , idx2 ):
286
- # GH#29751
287
- # loc on a multiindex containing nan values
288
- arr = [
289
- [11 , nulls_fixture , 13 ],
290
- [21 , nulls_fixture , 23 ],
291
- [31 , nulls_fixture , 33 ],
292
- [41 , nulls_fixture , 43 ],
293
- [51 , nulls_fixture , 53 ],
294
- ]
295
- cols = ["a" , "b" , "c" ]
296
- df = DataFrame (arr , columns = cols , dtype = "int64" ).set_index (["a" , "b" ])
297
- start = df .index [idx1 ]
298
- end = df .index [idx2 ]
299
- result = df .loc [start :end , :]
300
- expected = DataFrame (arr [idx1 : (idx2 + 1 )], columns = cols , dtype = "int64" ).set_index (
301
- ["a" , "b" ]
302
- )
303
- tm .assert_frame_equal (result , expected )
0 commit comments