@@ -450,12 +450,38 @@ def test_loc_getitem_bool(self):
450
450
def test_loc_getitem_int_slice (self ):
451
451
452
452
# int slices in int
453
- self .check_result ('int slice1' , 'loc' , slice (1 , 3 ), 'ix' , { 0 : [2 ,4 ], 1 : [3 ,6 ], 2 : [4 ,8 ] }, typs = ['ints' ], fails = KeyError )
453
+ self .check_result ('int slice1' , 'loc' , slice (2 , 4 ), 'ix' , { 0 : [2 ,4 ], 1 : [3 ,6 ], 2 : [4 ,8 ] }, typs = ['ints' ], fails = KeyError )
454
454
455
455
# ok
456
- self .check_result ('int slice2' , 'loc' , slice (2 ,5 ), 'ix' , [2 ,4 ], typs = ['ints' ], axes = 0 )
457
- self .check_result ('int slice2' , 'loc' , slice (3 ,7 ), 'ix' , [3 ,6 ], typs = ['ints' ], axes = 1 )
458
- self .check_result ('int slice2' , 'loc' , slice (4 ,9 ), 'ix' , [4 ,8 ], typs = ['ints' ], axes = 2 )
456
+ self .check_result ('int slice2' , 'loc' , slice (2 ,4 ), 'ix' , [2 ,4 ], typs = ['ints' ], axes = 0 )
457
+ self .check_result ('int slice2' , 'loc' , slice (3 ,6 ), 'ix' , [3 ,6 ], typs = ['ints' ], axes = 1 )
458
+ self .check_result ('int slice2' , 'loc' , slice (4 ,8 ), 'ix' , [4 ,8 ], typs = ['ints' ], axes = 2 )
459
+
460
+ # GH 3053
461
+ # loc should treat integer slices like label slices
462
+ from itertools import product
463
+
464
+ index = MultiIndex .from_tuples ([t for t in product ([6 ,7 ,8 ], ['a' , 'b' ])])
465
+ df = DataFrame (np .random .randn (6 , 6 ), index , index )
466
+ result = df .loc [6 :8 ,:]
467
+ expected = df .ix [6 :8 ,:]
468
+ assert_frame_equal (result ,expected )
469
+
470
+ index = MultiIndex .from_tuples ([t for t in product ([10 , 20 , 30 ], ['a' , 'b' ])])
471
+ df = DataFrame (np .random .randn (6 , 6 ), index , index )
472
+ result = df .loc [20 :30 ,:]
473
+ expected = df .ix [20 :30 ,:]
474
+ assert_frame_equal (result ,expected )
475
+
476
+ # doc examples
477
+ result = df .loc [10 ,:]
478
+ expected = df .ix [10 ,:]
479
+ assert_frame_equal (result ,expected )
480
+
481
+ result = df .loc [:,10 ]
482
+ #expected = df.ix[:,10] (this fails)
483
+ expected = df [10 ]
484
+ assert_frame_equal (result ,expected )
459
485
460
486
def test_loc_getitem_label_slice (self ):
461
487
@@ -475,8 +501,7 @@ def test_loc_getitem_label_slice(self):
475
501
self .check_result ('mixed slice' , 'loc' , slice (2 ,8 ), 'ix' , slice (2 ,8 ), typs = ['mixed' ], axes = 1 , fails = KeyError )
476
502
self .check_result ('mixed slice' , 'loc' , slice (2 ,8 ), 'ix' , slice (2 ,8 ), typs = ['mixed' ], axes = 2 , fails = KeyError )
477
503
478
- # you would think this would work, but we don't have an ordering, so fail
479
- self .check_result ('mixed slice' , 'loc' , slice (2 ,5 ,2 ), 'ix' , slice (2 ,4 ,2 ), typs = ['mixed' ], axes = 0 , fails = ValueError )
504
+ self .check_result ('mixed slice' , 'loc' , slice (2 ,4 ,2 ), 'ix' , slice (2 ,4 ,2 ), typs = ['mixed' ], axes = 0 )
480
505
481
506
def test_loc_general (self ):
482
507
0 commit comments