@@ -2273,24 +2273,101 @@ def test_order(self):
2273
2273
self .assertTrue (ordered [::- 1 ].is_monotonic )
2274
2274
self .assert_numpy_array_equal (dexer , [0 , 2 , 1 ])
2275
2275
2276
+ def test_asobject (self ):
2277
+ idx = date_range (start = '2013-01-01' , periods = 4 , freq = 'M' , name = 'idx' )
2278
+ expected = Index ([Timestamp ('2013-01-31' ), Timestamp ('2013-02-28' ),
2279
+ Timestamp ('2013-03-31' ), Timestamp ('2013-04-30' )],
2280
+ dtype = object , name = 'idx' )
2281
+
2282
+ result = idx .asobject
2283
+ self .assertTrue (result .equals (expected ))
2284
+ self .assertEqual (result .name , expected .name )
2285
+
2276
2286
def test_insert (self ):
2277
- idx = DatetimeIndex (['2000-01-04' , '2000-01-01' , '2000-01-02' ])
2287
+ idx = DatetimeIndex (['2000-01-04' , '2000-01-01' , '2000-01-02' ], name = 'idx' )
2278
2288
2279
2289
result = idx .insert (2 , datetime (2000 , 1 , 5 ))
2280
- exp = DatetimeIndex (['2000-01-04' , '2000-01-01' , '2000-01-05' ,
2281
- '2000-01-02' ])
2282
- self .assertTrue (result .equals (exp ))
2290
+ expected = DatetimeIndex (['2000-01-04' , '2000-01-01' , '2000-01-05' ,
2291
+ '2000-01-02' ], name = 'idx' )
2292
+ self .assertTrue (result .equals (expected ))
2293
+ self .assertEqual (result .name , expected .name )
2283
2294
2284
2295
# insertion of non-datetime should coerce to object index
2285
2296
result = idx .insert (1 , 'inserted' )
2286
2297
expected = Index ([datetime (2000 , 1 , 4 ), 'inserted' , datetime (2000 , 1 , 1 ),
2287
- datetime (2000 , 1 , 2 )])
2298
+ datetime (2000 , 1 , 2 )], name = 'idx' )
2288
2299
self .assertNotIsInstance (result , DatetimeIndex )
2289
2300
tm .assert_index_equal (result , expected )
2301
+ self .assertEqual (result .name , expected .name )
2302
+
2303
+ idx = date_range ('1/1/2000' , periods = 3 , freq = 'M' , name = 'idx' )
2304
+
2305
+ # preserve freq
2306
+ expected_0 = DatetimeIndex (['1999-12-31' , '2000-01-31' , '2000-02-29' ,
2307
+ '2000-03-31' ], name = 'idx' , freq = 'M' )
2308
+ expected_3 = DatetimeIndex (['2000-01-31' , '2000-02-29' , '2000-03-31' ,
2309
+ '2000-04-30' ], name = 'idx' , freq = 'M' )
2310
+
2311
+ # reset freq to None
2312
+ expected_1_nofreq = DatetimeIndex (['2000-01-31' , '2000-01-31' , '2000-02-29' ,
2313
+ '2000-03-31' ], name = 'idx' , freq = None )
2314
+ expected_3_nofreq = DatetimeIndex (['2000-01-31' , '2000-02-29' , '2000-03-31' ,
2315
+ '2000-01-02' ], name = 'idx' , freq = None )
2316
+
2317
+ cases = [(0 , datetime (1999 , 12 , 31 ), expected_0 ),
2318
+ (- 3 , datetime (1999 , 12 , 31 ), expected_0 ),
2319
+ (3 , datetime (2000 , 4 , 30 ), expected_3 ),
2320
+ (1 , datetime (2000 , 1 , 31 ), expected_1_nofreq ),
2321
+ (3 , datetime (2000 , 1 , 2 ), expected_3_nofreq )]
2322
+
2323
+ for n , d , expected in cases :
2324
+ result = idx .insert (n , d )
2325
+ self .assertTrue (result .equals (expected ))
2326
+ self .assertEqual (result .name , expected .name )
2327
+ self .assertEqual (result .freq , expected .freq )
2290
2328
2291
- idx = date_range ('1/1/2000' , periods = 3 , freq = 'M' )
2292
- result = idx .insert (3 , datetime (2000 , 4 , 30 ))
2293
- self .assertEqual (result .freqstr , 'M' )
2329
+ # reset freq to None
2330
+ result = idx .insert (3 , datetime (2000 , 1 , 2 ))
2331
+ expected = DatetimeIndex (['2000-01-31' , '2000-02-29' , '2000-03-31' ,
2332
+ '2000-01-02' ], name = 'idx' , freq = None )
2333
+ self .assertTrue (result .equals (expected ))
2334
+ self .assertEqual (result .name , expected .name )
2335
+ self .assertTrue (result .freq is None )
2336
+
2337
+ # GH 7299
2338
+ _skip_if_no_pytz ()
2339
+ import pytz
2340
+
2341
+ idx = date_range ('1/1/2000' , periods = 3 , freq = 'D' , tz = 'US/Pacific' , name = 'idx' )
2342
+ with tm .assertRaises (ValueError ):
2343
+ result = idx .insert (3 , pd .Timestamp ('2000-01-04' ))
2344
+ with tm .assertRaises (ValueError ):
2345
+ result = idx .insert (3 , datetime (2000 , 1 , 4 ))
2346
+ with tm .assertRaises (ValueError ):
2347
+ result = idx .insert (3 , pd .Timestamp ('2000-01-04' , tz = 'US/Eastern' ))
2348
+ with tm .assertRaises (ValueError ):
2349
+ result = idx .insert (3 , datetime (2000 , 1 , 4 , tzinfo = pytz .timezone ('US/Eastern' )))
2350
+
2351
+ # preserve freq
2352
+ expected = date_range ('1/1/2000' , periods = 4 , freq = 'D' , tz = 'US/Pacific' , name = 'idx' )
2353
+ for d in [pd .Timestamp ('2000-01-04' , tz = 'US/Pacific' ),
2354
+ datetime (2000 , 1 , 4 , tzinfo = pytz .timezone ('US/Pacific' ))]:
2355
+
2356
+ result = idx .insert (3 , d )
2357
+ self .assertTrue (result .equals (expected ))
2358
+ self .assertEqual (result .name , expected .name )
2359
+ self .assertEqual (result .freqstr , 'D' )
2360
+
2361
+ expected = DatetimeIndex (['2000-01-01' , '2000-01-02' , '2000-01-03' ,
2362
+ '2000-01-02' ], name = 'idx' ,
2363
+ tz = 'US/Pacific' , freq = None )
2364
+ # reset freq to None
2365
+ for d in [pd .Timestamp ('2000-01-02' , tz = 'US/Pacific' ),
2366
+ datetime (2000 , 1 , 2 , tzinfo = pytz .timezone ('US/Pacific' ))]:
2367
+ result = idx .insert (3 , d )
2368
+ self .assertTrue (result .equals (expected ))
2369
+ self .assertEqual (result .name , expected .name )
2370
+ self .assertTrue (result .freq is None )
2294
2371
2295
2372
def test_delete (self ):
2296
2373
idx = date_range (start = '2000-01-01' , periods = 5 , freq = 'M' , name = 'idx' )
0 commit comments