@@ -2966,6 +2966,42 @@ def test_slice_locs_indexerror(self):
29662966 s = Series (lrange (100000 ), times )
29672967 s .ix [datetime (1900 , 1 , 1 ):datetime (2100 , 1 , 1 )]
29682968
2969+ def test_slicing_datetimes (self ):
2970+
2971+ # GH 7523
2972+
2973+ # unique
2974+ df = DataFrame (np .arange (4. ,dtype = 'float64' ),
2975+ index = [datetime (2001 , 1 , i , 10 , 00 ) for i in [1 ,2 ,3 ,4 ]])
2976+ result = df .ix [datetime (2001 ,1 ,1 ,10 ):]
2977+ assert_frame_equal (result ,df )
2978+ result = df .ix [:datetime (2001 ,1 ,4 ,10 )]
2979+ assert_frame_equal (result ,df )
2980+ result = df .ix [datetime (2001 ,1 ,1 ,10 ):datetime (2001 ,1 ,4 ,10 )]
2981+ assert_frame_equal (result ,df )
2982+
2983+ result = df .ix [datetime (2001 ,1 ,1 ,11 ):]
2984+ expected = df .iloc [1 :]
2985+ assert_frame_equal (result ,expected )
2986+ result = df .ix ['20010101 11' :]
2987+ assert_frame_equal (result ,expected )
2988+
2989+ # duplicates
2990+ df = pd .DataFrame (np .arange (5. ,dtype = 'float64' ),
2991+ index = [datetime (2001 , 1 , i , 10 , 00 ) for i in [1 ,2 ,2 ,3 ,4 ]])
2992+
2993+ result = df .ix [datetime (2001 ,1 ,1 ,10 ):]
2994+ assert_frame_equal (result ,df )
2995+ result = df .ix [:datetime (2001 ,1 ,4 ,10 )]
2996+ assert_frame_equal (result ,df )
2997+ result = df .ix [datetime (2001 ,1 ,1 ,10 ):datetime (2001 ,1 ,4 ,10 )]
2998+ assert_frame_equal (result ,df )
2999+
3000+ result = df .ix [datetime (2001 ,1 ,1 ,11 ):]
3001+ expected = df .iloc [1 :]
3002+ assert_frame_equal (result ,expected )
3003+ result = df .ix ['20010101 11' :]
3004+ assert_frame_equal (result ,expected )
29693005
29703006class TestSeriesDatetime64 (tm .TestCase ):
29713007
@@ -3054,7 +3090,7 @@ def test_intersection(self):
30543090 for tz in [None , 'Asia/Tokyo' ]:
30553091 rng = date_range ('6/1/2000' , '6/30/2000' , freq = 'D' , name = 'idx' )
30563092
3057- # if target has the same name, it is preserved
3093+ # if target has the same name, it is preserved
30583094 rng2 = date_range ('5/15/2000' , '6/20/2000' , freq = 'D' , name = 'idx' )
30593095 expected2 = date_range ('6/1/2000' , '6/20/2000' , freq = 'D' , name = 'idx' )
30603096
0 commit comments