Skip to content

Commit e3ef17a

Browse files
committed
BUG: treat empty string as NaT in to_datetime, close #1085
1 parent cc44795 commit e3ef17a

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

pandas/core/datetools.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ def to_datetime(arg, errors='ignore', dayfirst=False):
9898
dayfirst=dayfirst)
9999

100100
try:
101+
if not arg:
102+
return arg
101103
return parser.parse(arg, dayfirst=dayfirst)
102104
except Exception:
103105
if errors == 'raise':

pandas/src/datetime.pyx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,9 @@ def string_to_datetime(ndarray[object] strings, raise_=False, dayfirst=False):
633633
elif PyDateTime_Check(val):
634634
result[i] = val
635635
else:
636+
if len(val) == 0:
637+
result[i] = NaT
638+
continue
636639
try:
637640
result[i] = parse(val, dayfirst=dayfirst)
638641
except Exception:
@@ -646,6 +649,9 @@ def string_to_datetime(ndarray[object] strings, raise_=False, dayfirst=False):
646649
if util._checknull(val):
647650
oresult[i] = val
648651
else:
652+
if len(val) == 0:
653+
oresult[i] = NaT
654+
continue
649655
try:
650656
oresult[i] = parse(val, dayfirst=dayfirst)
651657
except Exception:

pandas/tests/test_timeseries.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,6 @@ def test_string_na_nat_conversion(self):
335335
# GH #999, #858
336336

337337
from dateutil.parser import parse
338-
from pandas.core.datetools import to_datetime
339338

340339
strings = np.array(['1/1/2000', '1/2/2000', np.nan,
341340
'1/4/2000, 12:34:56'], dtype=object)
@@ -384,6 +383,13 @@ def test_string_na_nat_conversion(self):
384383
assert_series_equal(dresult, expected)
385384
self.assertEquals(dresult.name, 'foo')
386385

386+
def test_to_datetime_empty_string(self):
387+
result = to_datetime('')
388+
self.assert_(result == '')
389+
390+
result = to_datetime(['', ''])
391+
self.assert_(isnull(result).all())
392+
387393
def test_index_to_datetime(self):
388394
idx = Index(['1/1/2000', '1/2/2000', '1/3/2000'])
389395

0 commit comments

Comments
 (0)