@@ -2293,33 +2293,82 @@ def test_insert(self):
22932293 self .assertEqual (result .freqstr , 'M' )
22942294
22952295 def test_delete (self ):
2296- idx = date_range (start = '2000-01-01' , periods = 4 , freq = 'M' , name = 'idx' )
2296+ idx = date_range (start = '2000-01-01' , periods = 5 , freq = 'M' , name = 'idx' )
22972297
2298- expected = date_range (start = '2000-02-01' , periods = 3 , freq = 'M' , name = 'idx' )
2299- result = idx .delete (0 )
2300- self .assertTrue (result .equals (expected ))
2301- self .assertEqual (result .name , expected .name )
2302- self .assertEqual (result .freqstr , 'M' )
2298+ # prserve freq
2299+ expected_0 = date_range (start = '2000-02-01' , periods = 4 , freq = 'M' , name = 'idx' )
2300+ expected_4 = date_range (start = '2000-01-01' , periods = 4 , freq = 'M' , name = 'idx' )
23032301
2304- expected = date_range (start = '2000-01-01' , periods = 3 , freq = 'M' , name = 'idx' )
2305- result = idx .delete (- 1 )
2306- self .assertTrue (result .equals (expected ))
2307- self .assertEqual (result .name , expected .name )
2308- self .assertEqual (result .freqstr , 'M' )
2302+ # reset freq to None
2303+ expected_1 = DatetimeIndex (['2000-01-31' , '2000-03-31' , '2000-04-30' ,
2304+ '2000-05-31' ], freq = None , name = 'idx' )
2305+
2306+ cases = {0 : expected_0 , - 5 : expected_0 ,
2307+ - 1 : expected_4 , 4 : expected_4 ,
2308+ 1 : expected_1 }
2309+ for n , expected in compat .iteritems (cases ):
2310+ result = idx .delete (n )
2311+ self .assertTrue (result .equals (expected ))
2312+ self .assertEqual (result .name , expected .name )
2313+ self .assertEqual (result .freq , expected .freq )
23092314
23102315 with tm .assertRaises ((IndexError , ValueError )):
23112316 # either depeidnig on numpy version
23122317 result = idx .delete (5 )
23132318
2314- idx = date_range (start = '2000-01-01' , periods = 4 ,
2315- freq = 'M ' , name = 'idx' , tz = 'US/Pacific' )
2319+ idx = date_range (start = '2000-01-01' , periods = 5 ,
2320+ freq = 'D ' , name = 'idx' , tz = 'US/Pacific' )
23162321
2317- expected = date_range (start = '2000-02-01 ' , periods = 3 ,
2318- freq = 'M ' , name = 'idx' , tz = 'US/Pacific' )
2322+ expected = date_range (start = '2000-01-02 ' , periods = 4 ,
2323+ freq = 'D ' , name = 'idx' , tz = 'US/Pacific' )
23192324 result = idx .delete (0 )
23202325 self .assertTrue (result .equals (expected ))
23212326 self .assertEqual (result .name , expected .name )
2322- self .assertEqual (result .freqstr , 'M' )
2327+ self .assertEqual (result .freqstr , 'D' )
2328+ self .assertEqual (result .tz , expected .tz )
2329+
2330+ def test_delete_slice (self ):
2331+ idx = date_range (start = '2000-01-01' , periods = 10 , freq = 'D' , name = 'idx' )
2332+
2333+ # prserve freq
2334+ expected_0_2 = date_range (start = '2000-01-04' , periods = 7 , freq = 'D' , name = 'idx' )
2335+ expected_7_9 = date_range (start = '2000-01-01' , periods = 7 , freq = 'D' , name = 'idx' )
2336+
2337+ # reset freq to None
2338+ expected_3_5 = DatetimeIndex (['2000-01-01' , '2000-01-02' , '2000-01-03' ,
2339+ '2000-01-07' , '2000-01-08' , '2000-01-09' ,
2340+ '2000-01-10' ], freq = None , name = 'idx' )
2341+
2342+ cases = {(0 , 1 , 2 ): expected_0_2 ,
2343+ (7 , 8 , 9 ): expected_7_9 ,
2344+ (3 , 4 , 5 ): expected_3_5 }
2345+ for n , expected in compat .iteritems (cases ):
2346+ result = idx .delete (n )
2347+ self .assertTrue (result .equals (expected ))
2348+ self .assertEqual (result .name , expected .name )
2349+ self .assertEqual (result .freq , expected .freq )
2350+
2351+ result = idx .delete (slice (n [0 ], n [- 1 ] + 1 ))
2352+ self .assertTrue (result .equals (expected ))
2353+ self .assertEqual (result .name , expected .name )
2354+ self .assertEqual (result .freq , expected .freq )
2355+
2356+ ts = pd .Series (1 , index = pd .date_range ('2000-01-01' , periods = 10 ,
2357+ freq = 'D' , name = 'idx' ))
2358+ # preserve freq
2359+ result = ts .drop (ts .index [:5 ]).index
2360+ expected = pd .date_range ('2000-01-06' , periods = 5 , freq = 'D' , name = 'idx' )
2361+ self .assertTrue (result .equals (expected ))
2362+ self .assertEqual (result .name , expected .name )
2363+ self .assertEqual (result .freq , expected .freq )
2364+
2365+ # reset freq to None
2366+ result = ts .drop (ts .index [[1 , 3 , 5 , 7 , 9 ]]).index
2367+ expected = DatetimeIndex (['2000-01-01' , '2000-01-03' , '2000-01-05' ,
2368+ '2000-01-07' , '2000-01-09' ], freq = None , name = 'idx' )
2369+ self .assertTrue (result .equals (expected ))
2370+ self .assertEqual (result .name , expected .name )
2371+ self .assertEqual (result .freq , expected .freq )
23232372
23242373 def test_map_bug_1677 (self ):
23252374 index = DatetimeIndex (['2012-04-25 09:30:00.393000' ])
0 commit comments