@@ -74,10 +74,11 @@ def test_construction(self):
74
74
self .assertEqual (Timedelta ('-1:00:00' ), - timedelta (hours = 1 ))
75
75
self .assertEqual (Timedelta ('-01:00:00' ), - timedelta (hours = 1 ))
76
76
77
- # more strings
77
+ # more strings & abbrevs
78
78
# GH 8190
79
79
self .assertEqual (Timedelta ('1 h' ), timedelta (hours = 1 ))
80
80
self .assertEqual (Timedelta ('1 hour' ), timedelta (hours = 1 ))
81
+ self .assertEqual (Timedelta ('1 hr' ), timedelta (hours = 1 ))
81
82
self .assertEqual (Timedelta ('1 hours' ), timedelta (hours = 1 ))
82
83
self .assertEqual (Timedelta ('-1 hours' ), - timedelta (hours = 1 ))
83
84
self .assertEqual (Timedelta ('1 m' ), timedelta (minutes = 1 ))
@@ -169,18 +170,59 @@ def test_round(self):
169
170
t1 = Timedelta ('1 days 02:34:56.789123456' )
170
171
t2 = Timedelta ('-1 days 02:34:56.789123456' )
171
172
172
- for (reso , s1 , s2 ) in [('N' , t1 , t2 ),
173
+ for (freq , s1 , s2 ) in [('N' , t1 , t2 ),
173
174
('U' , Timedelta ('1 days 02:34:56.789123000' ),Timedelta ('-1 days 02:34:56.789123000' )),
174
175
('L' , Timedelta ('1 days 02:34:56.789000000' ),Timedelta ('-1 days 02:34:56.789000000' )),
175
176
('S' , Timedelta ('1 days 02:34:56' ),Timedelta ('-1 days 02:34:56' )),
177
+ ('2S' , Timedelta ('1 days 02:34:56' ),Timedelta ('-1 days 02:34:56' )),
178
+ ('5S' , Timedelta ('1 days 02:34:55' ),Timedelta ('-1 days 02:34:55' )),
176
179
('T' , Timedelta ('1 days 02:34:00' ),Timedelta ('-1 days 02:34:00' )),
180
+ ('12T' , Timedelta ('1 days 02:24:00' ),Timedelta ('-1 days 02:24:00' )),
177
181
('H' , Timedelta ('1 days 02:00:00' ),Timedelta ('-1 days 02:00:00' )),
178
182
('d' , Timedelta ('1 days' ),Timedelta ('-1 days' ))]:
179
- r1 = t1 .round (reso )
183
+ r1 = t1 .round (freq )
180
184
self .assertEqual (r1 , s1 )
181
- r2 = t2 .round (reso )
185
+ r2 = t2 .round (freq )
182
186
self .assertEqual (r2 , s2 )
183
187
188
+ # invalid
189
+ for freq in ['Y' ,'M' ,'foobar' ]:
190
+ self .assertRaises (ValueError , lambda : t1 .round (freq ))
191
+
192
+ t1 = timedelta_range ('1 days' ,periods = 3 ,freq = '1 min 2 s 3 us' )
193
+ t2 = - 1 * t1
194
+ t1a = timedelta_range ('1 days' ,periods = 3 ,freq = '1 min 2 s' )
195
+ t1b = timedelta_range ('1 days' ,periods = 3 ,freq = '1 min' )
196
+ t1c = pd .TimedeltaIndex ([1 ,1 ,1 ],unit = 'D' )
197
+
198
+ # note that negative times round DOWN! so don't give whole numbers
199
+ for (freq , s1 , s2 ) in [('N' , t1 , t2 ),
200
+ ('U' , t1 , t2 ),
201
+ ('L' , t1a , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:58:57.999000' ,
202
+ '-2 days +23:57:55.999000' ],
203
+ dtype = 'timedelta64[ns]' , freq = None )),
204
+ ('S' , t1a , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:58:57' , '-2 days +23:57:55' ],
205
+ dtype = 'timedelta64[ns]' , freq = None )),
206
+ ('2S' , t1a , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:58:56' , '-2 days +23:57:54' ],
207
+ dtype = 'timedelta64[ns]' , freq = None )),
208
+ ('5S' , t1b , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:58:55' , '-2 days +23:57:55' ],
209
+ dtype = 'timedelta64[ns]' , freq = None )),
210
+ ('T' , t1b , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:58:00' , '-2 days +23:57:00' ],
211
+ dtype = 'timedelta64[ns]' , freq = None )),
212
+ ('12T' , t1c , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:48:00' , '-2 days +23:48:00' ],
213
+ dtype = 'timedelta64[ns]' , freq = None )),
214
+ ('H' , t1c , TimedeltaIndex (['-1 days +00:00:00' , '-2 days +23:00:00' , '-2 days +23:00:00' ],
215
+ dtype = 'timedelta64[ns]' , freq = None )),
216
+ ('d' , t1c , pd .TimedeltaIndex ([- 1 ,- 2 ,- 2 ],unit = 'D' ))]:
217
+ r1 = t1 .round (freq )
218
+ tm .assert_index_equal (r1 , s1 )
219
+ r2 = t2 .round (freq )
220
+ tm .assert_index_equal (r2 , s2 )
221
+
222
+ # invalid
223
+ for freq in ['Y' ,'M' ,'foobar' ]:
224
+ self .assertRaises (ValueError , lambda : t1 .round (freq ))
225
+
184
226
def test_repr (self ):
185
227
186
228
self .assertEqual (repr (Timedelta (10 ,unit = 'd' )),"Timedelta('10 days 00:00:00')" )
0 commit comments