11
11
bdate_range , date_range , _np_version_under1p7 )
12
12
import pandas .core .common as com
13
13
from pandas .compat import StringIO , lrange , range , zip , u , OrderedDict , long
14
- from pandas import compat
14
+ from pandas import compat , to_timedelta , tslib
15
15
from pandas .tseries .timedeltas import _coerce_scalar_to_timedelta_type as ct
16
16
from pandas .util .testing import (assert_series_equal ,
17
17
assert_frame_equal ,
@@ -33,10 +33,9 @@ def setUp(self):
33
33
def test_numeric_conversions (self ):
34
34
_skip_if_numpy_not_friendly ()
35
35
36
- # ns not converted properly
37
36
self .assert_ (ct (0 ) == np .timedelta64 (0 ,'ns' ))
38
- self .assert_ (ct (10 ) == np .timedelta64 (0 ,'ns' ))
39
- self .assert_ (ct (10 ,unit = 'ns' ) == np .timedelta64 (0 ,'ns' ).astype ('m8[ns]' ))
37
+ self .assert_ (ct (10 ) == np .timedelta64 (10 ,'ns' ))
38
+ self .assert_ (ct (10 ,unit = 'ns' ) == np .timedelta64 (10 ,'ns' ).astype ('m8[ns]' ))
40
39
41
40
self .assert_ (ct (10 ,unit = 'us' ) == np .timedelta64 (10 ,'us' ).astype ('m8[ns]' ))
42
41
self .assert_ (ct (10 ,unit = 'ms' ) == np .timedelta64 (10 ,'ms' ).astype ('m8[ns]' ))
@@ -56,11 +55,10 @@ def test_short_format_converters(self):
56
55
def conv (v ):
57
56
return v .astype ('m8[ns]' )
58
57
59
- # ns not converted properly
60
- self .assert_ (ct ('10' ) == np .timedelta64 (0 ,'ns' ))
61
- self .assert_ (ct ('10ns' ) == np .timedelta64 (0 ,'ns' ))
62
- self .assert_ (ct ('100' ) == np .timedelta64 (0 ,'ns' ))
63
- self .assert_ (ct ('100ns' ) == np .timedelta64 (0 ,'ns' ))
58
+ self .assert_ (ct ('10' ) == np .timedelta64 (10 ,'ns' ))
59
+ self .assert_ (ct ('10ns' ) == np .timedelta64 (10 ,'ns' ))
60
+ self .assert_ (ct ('100' ) == np .timedelta64 (100 ,'ns' ))
61
+ self .assert_ (ct ('100ns' ) == np .timedelta64 (100 ,'ns' ))
64
62
65
63
self .assert_ (ct ('1000' ) == np .timedelta64 (1000 ,'ns' ))
66
64
self .assert_ (ct ('1000ns' ) == np .timedelta64 (1000 ,'ns' ))
@@ -122,6 +120,48 @@ def conv(v):
122
120
# invalid
123
121
self .assertRaises (ValueError , ct , '- 1days, 00' )
124
122
123
+ def test_nat_converters (self ):
124
+ _skip_if_numpy_not_friendly ()
125
+
126
+ self .assert_ (to_timedelta ('nat' ) == tslib .iNaT )
127
+ self .assert_ (to_timedelta ('nan' ) == tslib .iNaT )
128
+
129
+ def test_to_timedelta (self ):
130
+ _skip_if_numpy_not_friendly ()
131
+
132
+ def conv (v ):
133
+ return v .astype ('m8[ns]' )
134
+ d1 = np .timedelta64 (1 ,'D' )
135
+
136
+ self .assert_ (to_timedelta ('1 days 06:05:01.00003' ) == conv (d1 + np .timedelta64 (6 * 3600 + 5 * 60 + 1 ,'s' )+ np .timedelta64 (30 ,'us' )))
137
+ self .assert_ (to_timedelta ('15.5us' ) == conv (np .timedelta64 (15500 ,'ns' )))
138
+
139
+ # empty string
140
+ result = to_timedelta ('' )
141
+ self .assert_ (result == tslib .iNaT )
142
+
143
+ result = to_timedelta (['' , '' ])
144
+ self .assert_ (isnull (result ).all ())
145
+
146
+ # pass thru
147
+ result = to_timedelta (np .array ([np .timedelta64 (1 ,'s' )]))
148
+ expected = np .array ([np .timedelta64 (1 ,'s' )])
149
+ tm .assert_almost_equal (result ,expected )
150
+
151
+ # ints
152
+ result = np .timedelta64 (0 ,'ns' )
153
+ expected = to_timedelta (0 )
154
+ self .assert_ (result == expected )
155
+
156
+ # Series
157
+ expected = Series ([timedelta (days = 1 ), timedelta (days = 1 , seconds = 1 )])
158
+ result = to_timedelta (Series (['1d' ,'1days 00:00:01' ]))
159
+ tm .assert_series_equal (result , expected )
160
+
161
+ # with units
162
+ result = Series ([ np .timedelta64 (0 ,'ns' ), np .timedelta64 (10 ,'s' ).astype ('m8[ns]' ) ],dtype = 'm8[ns]' )
163
+ expected = to_timedelta ([0 ,10 ],unit = 's' )
164
+ tm .assert_series_equal (result , expected )
125
165
126
166
if __name__ == '__main__' :
127
167
nose .runmodule (argv = [__file__ , '-vvs' , '-x' , '--pdb' , '--pdb-failure' ],
0 commit comments