Skip to content

Commit 6c3a89d

Browse files
committed
CLN: _possibily_convert_datetimes now uses to_datetimes internally
1 parent c3bc685 commit 6c3a89d

File tree

4 files changed

+22
-5
lines changed

4 files changed

+22
-5
lines changed

pandas/core/common.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,12 @@ def _possibly_cast_to_datetime(value, dtype, coerce = False):
10841084

10851085
if is_datetime64 or is_timedelta64:
10861086

1087+
# force the dtype if needed
1088+
#if is_datetime64 and dtype != 'datetime64[ns]':
1089+
# dtype = np.dtype('datetime64[ns]')
1090+
#elif is_timedelta64 and dtype != 'timedelta64[ns]':
1091+
# dtype = np.dtype('timedelta64[ns]')
1092+
10871093
if np.isscalar(value):
10881094
if value == tslib.iNaT or isnull(value):
10891095
value = tslib.iNaT
@@ -1098,7 +1104,9 @@ def _possibly_cast_to_datetime(value, dtype, coerce = False):
10981104
elif np.prod(value.shape) and value.dtype != dtype:
10991105
try:
11001106
if is_datetime64:
1101-
value = tslib.array_to_datetime(value, coerce = coerce)
1107+
from pandas.tseries.tools import to_datetime
1108+
value = to_datetime(value, coerce=coerce).values
1109+
#value = tslib.array_to_datetime(value, coerce = coerce)
11021110
elif is_timedelta64:
11031111
value = _possibly_cast_to_timedelta(value)
11041112
except:

pandas/tests/test_series.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,6 @@ def test_constructor_dtype_datetime64(self):
470470
self.assert_(s.dtype == 'M8[ns]')
471471

472472
# GH3416
473-
import pdb; pdb.set_trace()
474473
dates = [
475474
np.datetime64(datetime(2013, 1, 1)),
476475
np.datetime64(datetime(2013, 1, 2)),
@@ -483,6 +482,14 @@ def test_constructor_dtype_datetime64(self):
483482
s.ix[0] = np.nan
484483
self.assert_(s.dtype == 'M8[ns]')
485484

485+
# GH3414 related
486+
#import pdb; pdb.set_trace()
487+
#result = Series(Series(dates).astype('int')/1e6,dtype='M8[ms]')
488+
#self.assert_(result.dtype == 'M8[ns]')
489+
490+
#s = Series(dates, dtype='datetime64')
491+
#self.assert_(s.dtype == 'M8[ns]')
492+
486493
def test_constructor_dict(self):
487494
d = {'a': 0., 'b': 1., 'c': 2.}
488495
result = Series(d, index=['b', 'c', 'd', 'a'])

pandas/tseries/tests/test_timeseries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1470,7 +1470,7 @@ def test_frame_datetime64_handling_groupby(self):
14701470
(3, np.datetime64('2012-07-04'))],
14711471
columns=['a', 'date'])
14721472
result = df.groupby('a').first()
1473-
self.assertEqual(result['date'][3], np.datetime64('2012-07-03'))
1473+
self.assertEqual(result['date'][3], datetime(2012,7,3))
14741474

14751475
def test_series_interpolate_intraday(self):
14761476
# #1698

pandas/tseries/tools.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def _maybe_get_tz(tz):
5050

5151

5252
def to_datetime(arg, errors='ignore', dayfirst=False, utc=None, box=True,
53-
format=None):
53+
format=None, coerce=False):
5454
"""
5555
Convert argument to datetime
5656
@@ -68,6 +68,7 @@ def to_datetime(arg, errors='ignore', dayfirst=False, utc=None, box=True,
6868
If True returns a DatetimeIndex, if False returns ndarray of values
6969
format : string, default None
7070
strftime to parse time, eg "%d/%m/%Y"
71+
coerce : force errors to NaT (False by default)
7172
7273
Returns
7374
-------
@@ -84,7 +85,8 @@ def _convert_f(arg):
8485
result = tslib.array_strptime(arg, format)
8586
else:
8687
result = tslib.array_to_datetime(arg, raise_=errors == 'raise',
87-
utc=utc, dayfirst=dayfirst)
88+
utc=utc, dayfirst=dayfirst,
89+
coerce=coerce)
8890
if com.is_datetime64_dtype(result) and box:
8991
result = DatetimeIndex(result, tz='utc' if utc else None)
9092
return result

0 commit comments

Comments
 (0)