@@ -76,12 +76,26 @@ def to_datetime(arg, errors='ignore', dayfirst=False, utc=None, box=True,
76
76
-------
77
77
ret : datetime if parsing succeeded
78
78
"""
79
+ from pandas import Timestamp
79
80
from pandas .core .series import Series
80
81
from pandas .tseries .index import DatetimeIndex
81
82
82
- def _convert_f (arg ):
83
- arg = com ._ensure_object (arg )
83
+ def _convert_listlike (arg , box ):
84
+
85
+ if isinstance (arg , (list ,tuple )):
86
+ arg = np .array (arg , dtype = 'O' )
84
87
88
+ if com .is_datetime64_dtype (arg ):
89
+ if box and not isinstance (arg , DatetimeIndex ):
90
+ try :
91
+ return DatetimeIndex (arg , tz = 'utc' if utc else None )
92
+ except ValueError , e :
93
+ values , tz = tslib .datetime_to_datetime64 (arg )
94
+ return DatetimeIndex ._simple_new (values , None , tz = tz )
95
+
96
+ return arg
97
+
98
+ arg = com ._ensure_object (arg )
85
99
try :
86
100
if format is not None :
87
101
result = tslib .array_strptime (arg , format )
@@ -92,44 +106,25 @@ def _convert_f(arg):
92
106
if com .is_datetime64_dtype (result ) and box :
93
107
result = DatetimeIndex (result , tz = 'utc' if utc else None )
94
108
return result
109
+
95
110
except ValueError , e :
96
111
try :
97
112
values , tz = tslib .datetime_to_datetime64 (arg )
98
113
return DatetimeIndex ._simple_new (values , None , tz = tz )
99
114
except (ValueError , TypeError ):
100
115
raise e
101
116
102
- def _convert_listlike (arg ):
103
- if isinstance (arg , list ):
104
- arg = np .array (arg , dtype = 'O' )
105
-
106
- if com .is_datetime64_dtype (arg ):
107
- if box and not isinstance (arg , DatetimeIndex ):
108
- try :
109
- return DatetimeIndex (arg , tz = 'utc' if utc else None )
110
- except ValueError , e :
111
- try :
112
- values , tz = tslib .datetime_to_datetime64 (arg )
113
- return DatetimeIndex ._simple_new (values , None , tz = tz )
114
- except (ValueError , TypeError ):
115
- raise e
116
- return arg
117
-
118
- return _convert_f (arg )
119
-
120
117
if arg is None :
121
118
return arg
122
- elif isinstance (arg , datetime ):
119
+ elif isinstance (arg , Timestamp ):
123
120
return arg
124
121
elif isinstance (arg , Series ):
125
- values = arg .values
126
- if not com .is_datetime64_dtype (values ):
127
- values = _convert_f (values )
122
+ values = _convert_listlike (arg .values , box = False )
128
123
return Series (values , index = arg .index , name = arg .name )
129
- elif isinstance (arg , ( np . ndarray , list ) ):
130
- return _convert_listlike (arg )
124
+ elif com . is_list_like (arg ):
125
+ return _convert_listlike (arg , box = box )
131
126
132
- return _convert_listlike (np .array ([ arg ], dtype = 'O' ) )[0 ]
127
+ return _convert_listlike (np .array ([ arg ]), box = box )[0 ]
133
128
134
129
class DateParseError (ValueError ):
135
130
pass
0 commit comments