@@ -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
# ----------------------------------------------------------------------------
0 commit comments