@@ -810,103 +810,10 @@ def test_to_datetime_default(self):
810
810
xp = datetime (2001 , 1 , 1 )
811
811
self .assert_ (rs , xp )
812
812
813
-
814
- def test_to_datetime_mixed (self ):
815
-
816
- # 5863
817
- # passing a string format with embedded np.nan
818
-
819
- ts = Series ([np .nan , '2013-04-08 00:00:00.000' , '9999-12-31 00:00:00.000' ])
820
- expected = Series ([NaT ,Timestamp ('20130408' ),NaT ])
821
-
822
- result = to_datetime (ts , format = '%Y-%m-%d %H:%M:%S.%f' )
823
- assert_series_equal (result , ts )
824
-
825
- # raises if specified
826
- self .assertRaises (pd .tslib .OutOfBoundsDatetime , to_datetime , ts , format = '%Y-%m-%d %H:%M:%S.%f' , errors = 'raise' )
827
-
828
- result = to_datetime (ts , format = '%Y-%m-%d %H:%M:%S.%f' ,coerce = True )
829
- expected = Series ([NaT ,Timestamp ('20130408' ),NaT ])
830
- assert_series_equal (result ,expected )
831
-
832
- # passing integers
833
- ts = Series ([np .nan , 20130408 , '20130409' ])
834
- result = to_datetime (ts , format = '%Y%m%d' )
835
- expected = Series ([NaT ,Timestamp ('20130408' ),Timestamp ('20130409' )])
836
- assert_series_equal (result ,expected )
837
-
838
- # mixed datetime/np.datetime64('NaT')
839
- result = Series (to_datetime ([dt .datetime (2000 ,1 ,1 ),np .datetime64 ('NaT' )]))
840
- expected = Series ([dt .datetime (2000 ,1 ,1 ),NaT ])
841
- assert_series_equal (result , expected )
842
-
843
- def test_dayfirst (self ):
844
-
845
- # GH 3341
846
- result = to_datetime ('13-01-2012' , dayfirst = True )
847
- expected = Timestamp ('20120113' )
848
- self .assert_ (result == expected )
849
-
850
813
#### dayfirst is essentially broken
851
814
#### to_datetime('01-13-2012', dayfirst=True)
852
815
#### self.assertRaises(ValueError, to_datetime('01-13-2012', dayfirst=True))
853
816
854
- def test_to_datetime_format (self ):
855
- values = ['1/1/2000' , '1/2/2000' , '1/3/2000' ]
856
-
857
- results1 = [ Timestamp ('20000101' ), Timestamp ('20000201' ),
858
- Timestamp ('20000301' ) ]
859
- results2 = [ Timestamp ('20000101' ), Timestamp ('20000102' ),
860
- Timestamp ('20000103' ) ]
861
- for vals , expecteds in [ (values , (Index (results1 ), Index (results2 ))),
862
- (Series (values ),(Series (results1 ), Series (results2 ))),
863
- (values [0 ], (results1 [0 ], results2 [0 ])),
864
- (values [1 ], (results1 [1 ], results2 [1 ])),
865
- (values [2 ], (results1 [2 ], results2 [2 ])) ]:
866
-
867
- for i , fmt in enumerate (['%d/%m/%Y' , '%m/%d/%Y' ]):
868
- result = to_datetime (vals , format = fmt )
869
- expected = expecteds [i ]
870
-
871
- if isinstance (expected , Series ):
872
- assert_series_equal (result , Series (expected ))
873
- elif isinstance (expected , Timestamp ):
874
- self .assert_ (result == expected )
875
- else :
876
- self .assert_ (result .equals (expected ))
877
-
878
- def test_to_datetime_format_YYYYMMDD (self ):
879
- s = Series ([19801222 ,19801222 ] + [19810105 ]* 5 )
880
- expected = Series ([ Timestamp (x ) for x in s .apply (str ) ])
881
-
882
- result = to_datetime (s ,format = '%Y%m%d' )
883
- assert_series_equal (result , expected )
884
-
885
- result = to_datetime (s .apply (str ),format = '%Y%m%d' )
886
- assert_series_equal (result , expected )
887
-
888
- # with NaT
889
- expected = Series ([Timestamp ("19801222" ),Timestamp ("19801222" )] + [Timestamp ("19810105" )]* 5 )
890
- expected [2 ] = np .nan
891
- s [2 ] = np .nan
892
-
893
- result = to_datetime (s ,format = '%Y%m%d' )
894
- assert_series_equal (result , expected )
895
-
896
- # string with NaT
897
- s = s .apply (str )
898
- s [2 ] = 'nat'
899
- result = to_datetime (s ,format = '%Y%m%d' )
900
- assert_series_equal (result , expected )
901
-
902
-
903
- def test_to_datetime_format_microsecond (self ):
904
- val = '01-Apr-2011 00:00:01.978'
905
- format = '%d-%b-%Y %H:%M:%S.%f'
906
- result = to_datetime (val , format = format )
907
- exp = dt .datetime .strptime (val , format )
908
- self .assert_ (result == exp )
909
-
910
817
def test_to_datetime_on_datetime64_series (self ):
911
818
# #2699
912
819
s = Series (date_range ('1/1/2000' , periods = 10 ))
@@ -3125,6 +3032,82 @@ def test_date_range_fy5252(self):
3125
3032
self .assertEqual (dr [0 ], Timestamp ('2013-01-31' ))
3126
3033
self .assertEqual (dr [1 ], Timestamp ('2014-01-30' ))
3127
3034
3035
+ class TimeConversionFormats (tm .TestCase ):
3036
+ def test_to_datetime_format (self ):
3037
+ values = ['1/1/2000' , '1/2/2000' , '1/3/2000' ]
3038
+
3039
+ results1 = [ Timestamp ('20000101' ), Timestamp ('20000201' ),
3040
+ Timestamp ('20000301' ) ]
3041
+ results2 = [ Timestamp ('20000101' ), Timestamp ('20000102' ),
3042
+ Timestamp ('20000103' ) ]
3043
+ for vals , expecteds in [ (values , (Index (results1 ), Index (results2 ))),
3044
+ (Series (values ),(Series (results1 ), Series (results2 ))),
3045
+ (values [0 ], (results1 [0 ], results2 [0 ])),
3046
+ (values [1 ], (results1 [1 ], results2 [1 ])),
3047
+ (values [2 ], (results1 [2 ], results2 [2 ])) ]:
3048
+
3049
+ for i , fmt in enumerate (['%d/%m/%Y' , '%m/%d/%Y' ]):
3050
+ result = to_datetime (vals , format = fmt )
3051
+ expected = expecteds [i ]
3052
+
3053
+ if isinstance (expected , Series ):
3054
+ assert_series_equal (result , Series (expected ))
3055
+ elif isinstance (expected , Timestamp ):
3056
+ self .assert_ (result == expected )
3057
+ else :
3058
+ self .assert_ (result .equals (expected ))
3059
+
3060
+ def test_to_datetime_format_YYYYMMDD (self ):
3061
+ s = Series ([19801222 ,19801222 ] + [19810105 ]* 5 )
3062
+ expected = Series ([ Timestamp (x ) for x in s .apply (str ) ])
3063
+
3064
+ result = to_datetime (s ,format = '%Y%m%d' )
3065
+ assert_series_equal (result , expected )
3066
+
3067
+ result = to_datetime (s .apply (str ),format = '%Y%m%d' )
3068
+ assert_series_equal (result , expected )
3069
+
3070
+ # with NaT
3071
+ expected = Series ([Timestamp ("19801222" ),Timestamp ("19801222" )] + [Timestamp ("19810105" )]* 5 )
3072
+ expected [2 ] = np .nan
3073
+ s [2 ] = np .nan
3074
+
3075
+ result = to_datetime (s ,format = '%Y%m%d' )
3076
+ assert_series_equal (result , expected )
3077
+
3078
+ # string with NaT
3079
+ s = s .apply (str )
3080
+ s [2 ] = 'nat'
3081
+ result = to_datetime (s ,format = '%Y%m%d' )
3082
+ assert_series_equal (result , expected )
3083
+
3084
+
3085
+ def test_to_datetime_format_microsecond (self ):
3086
+ val = '01-Apr-2011 00:00:01.978'
3087
+ format = '%d-%b-%Y %H:%M:%S.%f'
3088
+ result = to_datetime (val , format = format )
3089
+ exp = dt .datetime .strptime (val , format )
3090
+ self .assert_ (result == exp )
3091
+
3092
+ def test_to_datetime_format_time (self ):
3093
+ data = [
3094
+ ['01/10/2010 15:20' , '%m/%d/%Y %H:%M' , Timestamp ('2010-01-10 15:20' )],
3095
+ ['01/10/2010 05:43' , '%m/%d/%Y %I:%M' , Timestamp ('2010-01-10 05:43' )],
3096
+ ['01/10/2010 13:56:01' , '%m/%d/%Y %H:%M:%S' , Timestamp ('2010-01-10 13:56:01' )]#,
3097
+ #['01/10/2010 08:14 PM', '%m/%d/%Y %I:%M %p', Timestamp('2010-01-10 20:14')],
3098
+ #['01/10/2010 07:40 AM', '%m/%d/%Y %I:%M %p', Timestamp('2010-01-10 07:40')],
3099
+ #['01/10/2010 09:12:56 AM', '%m/%d/%Y %I:%M:%S %p', Timestamp('2010-01-10 09:12:56')]
3100
+ ]
3101
+ for s , format , dt in data :
3102
+ self .assertEqual (to_datetime (s , format = format ), dt )
3103
+
3104
+ def test_to_datetime_format_weeks (self ):
3105
+ data = [
3106
+ ['2009324' , '%Y%W%w' , Timestamp ('2009-08-13' )],
3107
+ ['2013020' , '%Y%U%w' , Timestamp ('2013-01-13' )]
3108
+ ]
3109
+ for s , format , dt in data :
3110
+ self .assertEqual (to_datetime (s , format = format ), dt )
3128
3111
3129
3112
class TestToDatetimeInferFormat (tm .TestCase ):
3130
3113
def test_to_datetime_infer_datetime_format_consistent_format (self ):
0 commit comments