@@ -393,19 +393,51 @@ def test_iloc_exceeds_bounds(self):
393
393
self .assertRaises (IndexError , lambda : df .iloc [- 30 ])
394
394
395
395
# slices are ok
396
- result = df .iloc [:,4 :10 ]
396
+ result = df .iloc [:,4 :10 ] # 0 < start < len < stop
397
397
expected = df .iloc [:,4 :]
398
398
assert_frame_equal (result ,expected )
399
399
400
- result = df .iloc [:,- 4 :- 10 ]
401
- expected = df .iloc [:,- 4 :]
400
+ result = df .iloc [:,- 4 :- 10 ] # stop < 0 < start < len
401
+ expected = df .iloc [:,:0 ]
402
+ assert_frame_equal (result ,expected )
403
+
404
+ result = df .iloc [:,10 :4 :- 1 ] # 0 < stop < len < start (down)
405
+ expected = df .iloc [:,:4 :- 1 ]
406
+ assert_frame_equal (result ,expected )
407
+
408
+ result = df .iloc [:,4 :- 10 :- 1 ] # stop < 0 < start < len (down)
409
+ expected = df .iloc [:,4 ::- 1 ]
410
+ assert_frame_equal (result ,expected )
411
+
412
+ result = df .iloc [:,- 10 :4 ] # start < 0 < stop < len
413
+ expected = df .iloc [:,:4 ]
414
+ assert_frame_equal (result ,expected )
415
+
416
+ result = df .iloc [:,10 :4 ] # 0 < stop < len < start
417
+ expected = df .iloc [:,:0 ]
418
+ assert_frame_equal (result ,expected )
419
+
420
+ result = df .iloc [:,- 10 :- 11 :- 1 ] # stop < start < 0 < len (down)
421
+ expected = df .iloc [:,:0 ]
422
+ assert_frame_equal (result ,expected )
423
+
424
+ result = df .iloc [:,10 :11 ] # 0 < len < start < stop
425
+ expected = df .iloc [:,:0 ]
402
426
assert_frame_equal (result ,expected )
403
427
404
428
# slice bounds exceeding is ok
405
429
result = s .iloc [18 :30 ]
406
430
expected = s .iloc [18 :]
407
431
assert_series_equal (result ,expected )
408
432
433
+ result = s .iloc [30 :]
434
+ expected = s .iloc [:0 ]
435
+ assert_series_equal (result ,expected )
436
+
437
+ result = s .iloc [30 ::- 1 ]
438
+ expected = s .iloc [::- 1 ]
439
+ assert_series_equal (result ,expected )
440
+
409
441
# doc example
410
442
def check (result ,expected ):
411
443
str (result )
0 commit comments