8
8
from inspect import getargspec
9
9
from itertools import product , starmap
10
10
from distutils .version import LooseVersion
11
+ import warnings
11
12
12
13
import nose
13
-
14
14
from numpy import nan , inf
15
15
import numpy as np
16
16
import numpy .ma as ma
17
- import pandas as pd
17
+ import pandas . lib as lib
18
18
19
+ import pandas as pd
19
20
from pandas import (Index , Series , DataFrame , isnull , notnull , bdate_range ,
20
21
date_range , period_range , timedelta_range )
21
22
from pandas .core .index import MultiIndex
25
26
from pandas .tseries .tdi import Timedelta , TimedeltaIndex
26
27
import pandas .core .common as com
27
28
import pandas .core .config as cf
28
- import pandas .lib as lib
29
-
30
29
import pandas .core .datetools as datetools
31
30
import pandas .core .nanops as nanops
32
-
33
31
from pandas .compat import StringIO , lrange , range , zip , u , OrderedDict , long
34
32
from pandas import compat
35
33
from pandas .util .testing import (assert_series_equal ,
39
37
import pandas .util .testing as tm
40
38
41
39
40
+
42
41
#------------------------------------------------------------------------------
43
42
# Series test cases
44
43
@@ -3432,7 +3431,6 @@ def test_ops_datetimelike_align(self):
3432
3431
3433
3432
def test_timedelta64_functions (self ):
3434
3433
3435
- from datetime import timedelta
3436
3434
from pandas import date_range
3437
3435
3438
3436
# index min/max
@@ -5820,6 +5818,24 @@ def test_apply_dont_convert_dtype(self):
5820
5818
self .assertEqual (result .dtype , object )
5821
5819
5822
5820
def test_convert_objects (self ):
5821
+ # Tests: All to nans, coerce, true
5822
+ # Test coercion returns correct type
5823
+ s = Series (['a' , 'b' , 'c' ])
5824
+ results = s .convert_objects ('coerce' , False , False )
5825
+ expected = Series ([lib .NaT ] * 3 )
5826
+ assert_series_equal (results , expected )
5827
+
5828
+ results = s .convert_objects (False , 'coerce' , False )
5829
+ expected = Series ([np .nan ] * 3 )
5830
+ assert_series_equal (results , expected )
5831
+
5832
+ results = s .convert_objects (False , False , 'coerce' )
5833
+ expected = Series ([lib .NaT ] * 3 , dtype = np .dtype ('m8[ns]' ))
5834
+ assert_series_equal (results , expected )
5835
+
5836
+ with warnings .catch_warnings (record = True ) as w :
5837
+ tm .assert_produces_warning (s .convert_objects (True , True , 'coerce' ),
5838
+ com .RedundantSettingWarning )
5823
5839
5824
5840
s = Series ([1. , 2 , 3 ], index = ['a' , 'b' , 'c' ])
5825
5841
result = s .convert_objects (convert_dates = False , convert_numeric = True )
@@ -5875,23 +5891,28 @@ def test_convert_objects(self):
5875
5891
[Timestamp (
5876
5892
'20010101' ), Timestamp ('20010102' ), Timestamp ('20010103' ),
5877
5893
lib .NaT , lib .NaT , lib .NaT , Timestamp ('20010104' ), Timestamp ('20010105' )], dtype = 'M8[ns]' )
5878
- result = s2 .convert_objects (
5879
- convert_dates = 'coerce' , convert_numeric = False )
5894
+ result = s2 .convert_objects (convert_dates = 'coerce' ,
5895
+ convert_numeric = False ,
5896
+ convert_timedeltas = False )
5880
5897
assert_series_equal (result , expected )
5881
- result = s2 .convert_objects (
5882
- convert_dates = 'coerce' , convert_numeric = True )
5898
+ result = s2 .convert_objects (convert_dates = 'coerce' ,
5899
+ convert_numeric = False ,
5900
+ convert_timedeltas = False )
5883
5901
assert_series_equal (result , expected )
5884
5902
5885
5903
# preserver all-nans (if convert_dates='coerce')
5886
5904
s = Series (['foo' , 'bar' , 1 , 1.0 ], dtype = 'O' )
5887
- result = s .convert_objects (
5888
- convert_dates = 'coerce' , convert_numeric = False )
5889
- assert_series_equal (result , s )
5905
+ result = s .convert_objects (convert_dates = 'coerce' ,
5906
+ convert_numeric = False ,
5907
+ convert_timedeltas = False )
5908
+ expected = Series ([lib .NaT ]* 4 )
5909
+ assert_series_equal (result , expected )
5890
5910
5891
5911
# preserver if non-object
5892
5912
s = Series ([1 ], dtype = 'float32' )
5893
- result = s .convert_objects (
5894
- convert_dates = 'coerce' , convert_numeric = False )
5913
+ result = s .convert_objects (convert_dates = 'coerce' ,
5914
+ convert_numeric = False ,
5915
+ convert_timedeltas = False )
5895
5916
assert_series_equal (result , s )
5896
5917
5897
5918
#r = s.copy()
@@ -5900,13 +5921,14 @@ def test_convert_objects(self):
5900
5921
#self.assertEqual(result.dtype, 'M8[ns]')
5901
5922
5902
5923
# dateutil parses some single letters into today's value as a date
5924
+ expected = Series ([lib .NaT ])
5903
5925
for x in 'abcdefghijklmnopqrstuvwxyz' :
5904
5926
s = Series ([x ])
5905
5927
result = s .convert_objects (convert_dates = 'coerce' )
5906
- assert_series_equal (result , s )
5928
+ assert_series_equal (result , expected )
5907
5929
s = Series ([x .upper ()])
5908
5930
result = s .convert_objects (convert_dates = 'coerce' )
5909
- assert_series_equal (result , s )
5931
+ assert_series_equal (result , expected )
5910
5932
5911
5933
def test_convert_objects_preserve_bool (self ):
5912
5934
s = Series ([1 , True , 3 , 5 ], dtype = object )
0 commit comments