88from inspect import getargspec
99from itertools import product , starmap
1010from distutils .version import LooseVersion
11+ import warnings
1112
1213import nose
13-
1414from numpy import nan , inf
1515import numpy as np
1616import numpy .ma as ma
17- import pandas as pd
17+ import pandas . lib as lib
1818
19+ import pandas as pd
1920from pandas import (Index , Series , DataFrame , isnull , notnull , bdate_range ,
2021 date_range , period_range , timedelta_range )
2122from pandas .core .index import MultiIndex
2526from pandas .tseries .tdi import Timedelta , TimedeltaIndex
2627import pandas .core .common as com
2728import pandas .core .config as cf
28- import pandas .lib as lib
29-
3029import pandas .core .datetools as datetools
3130import pandas .core .nanops as nanops
32-
3331from pandas .compat import StringIO , lrange , range , zip , u , OrderedDict , long
3432from pandas import compat
3533from pandas .util .testing import (assert_series_equal ,
3937import pandas .util .testing as tm
4038
4139
40+
4241#------------------------------------------------------------------------------
4342# Series test cases
4443
@@ -3432,7 +3431,6 @@ def test_ops_datetimelike_align(self):
34323431
34333432 def test_timedelta64_functions (self ):
34343433
3435- from datetime import timedelta
34363434 from pandas import date_range
34373435
34383436 # index min/max
@@ -5820,6 +5818,24 @@ def test_apply_dont_convert_dtype(self):
58205818 self .assertEqual (result .dtype , object )
58215819
58225820 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 )
58235839
58245840 s = Series ([1. , 2 , 3 ], index = ['a' , 'b' , 'c' ])
58255841 result = s .convert_objects (convert_dates = False , convert_numeric = True )
@@ -5875,23 +5891,28 @@ def test_convert_objects(self):
58755891 [Timestamp (
58765892 '20010101' ), Timestamp ('20010102' ), Timestamp ('20010103' ),
58775893 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 )
58805897 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 )
58835901 assert_series_equal (result , expected )
58845902
58855903 # preserver all-nans (if convert_dates='coerce')
58865904 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 )
58905910
58915911 # preserver if non-object
58925912 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 )
58955916 assert_series_equal (result , s )
58965917
58975918 #r = s.copy()
@@ -5900,13 +5921,14 @@ def test_convert_objects(self):
59005921 #self.assertEqual(result.dtype, 'M8[ns]')
59015922
59025923 # dateutil parses some single letters into today's value as a date
5924+ expected = Series ([lib .NaT ])
59035925 for x in 'abcdefghijklmnopqrstuvwxyz' :
59045926 s = Series ([x ])
59055927 result = s .convert_objects (convert_dates = 'coerce' )
5906- assert_series_equal (result , s )
5928+ assert_series_equal (result , expected )
59075929 s = Series ([x .upper ()])
59085930 result = s .convert_objects (convert_dates = 'coerce' )
5909- assert_series_equal (result , s )
5931+ assert_series_equal (result , expected )
59105932
59115933 def test_convert_objects_preserve_bool (self ):
59125934 s = Series ([1 , True , 3 , 5 ], dtype = object )
0 commit comments