@@ -222,6 +222,13 @@ def test_index_aggregate(self):
222
222
agg = ds .aggregate ("number" , function = np .mean , spreadfn = np .var )
223
223
pd .testing .assert_frame_equal (agg .data , expected )
224
224
225
+ def test_index_select_monotonic (self ):
226
+ ds = Dataset (self .df , kdims = ["number" , "color" ])
227
+ selected = ds .select (number = 1 )
228
+ expected = pd .DataFrame ({'color' : ['red' , 'blue' ], 'values' : [0 , 1 ], 'number' : [1 , 1 ]}).set_index (['number' , 'color' ])
229
+ assert isinstance (selected .data .index , pd .MultiIndex )
230
+ pd .testing .assert_frame_equal (selected .data , expected )
231
+
225
232
def test_index_select (self ):
226
233
ds = Dataset (self .df , kdims = ["number" , "color" ])
227
234
selected = ds .select (number = 1 )
@@ -307,31 +314,29 @@ def test_sort(self):
307
314
np .testing .assert_array_equal (sorted_ds .dimension_values ("values" ), [1 , 3 , 0 , 2 ])
308
315
np .testing .assert_array_equal (sorted_ds .dimension_values ("number" ), [1 , 2 , 1 , 2 ])
309
316
310
- def test_select (self ):
311
- ds = Dataset (self .df , kdims = ["number" , "color" ])
317
+ def test_select_monotonic (self ):
318
+ ds = Dataset (self .df . sort_index () , kdims = ["number" , "color" ])
312
319
selected = ds .select (color = "red" )
313
320
pd .testing .assert_frame_equal (selected .data , self .df .iloc [[0 , 2 ], :])
314
321
315
322
selected = ds .select (number = 1 , color = 'red' )
316
323
assert selected == 0
317
324
318
- @pytest .mark .xfail (reason = "Not working" )
319
325
def test_select_not_monotonic (self ):
320
326
frame = pd .DataFrame ({"number" : [1 , 1 , 2 , 2 ], "color" : [2 , 1 , 2 , 1 ]})
321
327
index = pd .MultiIndex .from_frame (frame , names = frame .columns )
322
328
df = pd .DataFrame (range (4 ), index = index , columns = ["values" ])
323
329
ds = Dataset (df , kdims = list (frame .columns ))
324
330
325
331
data = ds .select (color = slice (2 , 3 )).data
326
- expected = pd .DataFrame ({"number" : [1 , 2 ], "color" : [2 , 2 ], "values" : [1 , 3 ]}).set_index (['number' , 'color' ])
332
+ expected = pd .DataFrame ({"number" : [1 , 2 ], "color" : [2 , 2 ], "values" : [0 , 2 ]}).set_index (['number' , 'color' ])
327
333
pd .testing .assert_frame_equal (data , expected )
328
334
329
- @pytest .mark .xfail (reason = "Not working" )
330
335
def test_select_not_in_index (self ):
331
336
ds = Dataset (self .df , kdims = ["number" , "color" ])
332
337
selected = ds .select (number = [2 , 3 ])
333
- expected = ds . select ( number = 2 )
334
- pd .testing .assert_frame_equal (selected .data , expected . data )
338
+ expected = self . df . loc [[ 2 ]]
339
+ pd .testing .assert_frame_equal (selected .data , expected )
335
340
336
341
def test_sample (self ):
337
342
ds = Dataset (self .df , kdims = ["number" , "color" ])
0 commit comments