@@ -3151,6 +3151,39 @@ def test_nat(self):
3151
3151
self .assertIs (DatetimeIndex ([np .nan ])[0 ], pd .NaT )
3152
3152
3153
3153
3154
+ def test_ufunc_coercions (self ):
3155
+ idx = date_range ('2011-01-01' , periods = 3 , freq = '2D' , name = 'x' )
3156
+
3157
+ delta = np .timedelta64 (1 , 'D' )
3158
+ for result in [idx + delta , np .add (idx , delta )]:
3159
+ tm .assertIsInstance (result , DatetimeIndex )
3160
+ exp = date_range ('2011-01-02' , periods = 3 , freq = '2D' , name = 'x' )
3161
+ tm .assert_index_equal (result , exp )
3162
+ self .assertEqual (result .freq , '2D' )
3163
+
3164
+ for result in [idx - delta , np .subtract (idx , delta )]:
3165
+ tm .assertIsInstance (result , DatetimeIndex )
3166
+ exp = date_range ('2010-12-31' , periods = 3 , freq = '2D' , name = 'x' )
3167
+ tm .assert_index_equal (result , exp )
3168
+ self .assertEqual (result .freq , '2D' )
3169
+
3170
+ delta = np .array ([np .timedelta64 (1 , 'D' ), np .timedelta64 (2 , 'D' ),
3171
+ np .timedelta64 (3 , 'D' )])
3172
+ for result in [idx + delta , np .add (idx , delta )]:
3173
+ tm .assertIsInstance (result , DatetimeIndex )
3174
+ exp = DatetimeIndex (['2011-01-02' , '2011-01-05' , '2011-01-08' ],
3175
+ freq = '3D' , name = 'x' )
3176
+ tm .assert_index_equal (result , exp )
3177
+ self .assertEqual (result .freq , '3D' )
3178
+
3179
+ for result in [idx - delta , np .subtract (idx , delta )]:
3180
+ tm .assertIsInstance (result , DatetimeIndex )
3181
+ exp = DatetimeIndex (['2010-12-31' , '2011-01-01' , '2011-01-02' ],
3182
+ freq = 'D' , name = 'x' )
3183
+ tm .assert_index_equal (result , exp )
3184
+ self .assertEqual (result .freq , 'D' )
3185
+
3186
+
3154
3187
class TestPeriodIndex (DatetimeLike , tm .TestCase ):
3155
3188
_holder = PeriodIndex
3156
3189
_multiprocess_can_split_ = True
@@ -3306,7 +3339,7 @@ def test_pickle_compat_construction(self):
3306
3339
def test_ufunc_coercions (self ):
3307
3340
# normal ops are also tested in tseries/test_timedeltas.py
3308
3341
idx = TimedeltaIndex (['2H' , '4H' , '6H' , '8H' , '10H' ],
3309
- freq = '2H' , name = 'x' )
3342
+ freq = '2H' , name = 'x' )
3310
3343
3311
3344
for result in [idx * 2 , np .multiply (idx , 2 )]:
3312
3345
tm .assertIsInstance (result , TimedeltaIndex )
@@ -3323,7 +3356,7 @@ def test_ufunc_coercions(self):
3323
3356
self .assertEqual (result .freq , 'H' )
3324
3357
3325
3358
idx = TimedeltaIndex (['2H' , '4H' , '6H' , '8H' , '10H' ],
3326
- freq = '2H' , name = 'x' )
3359
+ freq = '2H' , name = 'x' )
3327
3360
for result in [ - idx , np .negative (idx )]:
3328
3361
tm .assertIsInstance (result , TimedeltaIndex )
3329
3362
exp = TimedeltaIndex (['-2H' , '-4H' , '-6H' , '-8H' , '-10H' ],
@@ -3332,7 +3365,7 @@ def test_ufunc_coercions(self):
3332
3365
self .assertEqual (result .freq , '-2H' )
3333
3366
3334
3367
idx = TimedeltaIndex (['-2H' , '-1H' , '0H' , '1H' , '2H' ],
3335
- freq = 'H' , name = 'x' )
3368
+ freq = 'H' , name = 'x' )
3336
3369
for result in [ abs (idx ), np .absolute (idx )]:
3337
3370
tm .assertIsInstance (result , TimedeltaIndex )
3338
3371
exp = TimedeltaIndex (['2H' , '1H' , '0H' , '1H' , '2H' ],
0 commit comments