Skip to content

Commit 330d104

Browse files
ruidcwesm
authored andcommitted
treat XLRD.XL_CELL_ERROR as NaN
1 parent 8b78917 commit 330d104

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

pandas/io/parsers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1001,7 +1001,7 @@ def _parse_xls(self, sheetname, header=0, skiprows=None, index_col=None,
10011001
parse_dates=False, date_parser=None, na_values=None,
10021002
thousands=None, chunksize=None):
10031003
from datetime import MINYEAR, time, datetime
1004-
from xlrd import xldate_as_tuple, XL_CELL_DATE
1004+
from xlrd import xldate_as_tuple, XL_CELL_DATE, XL_CELL_ERROR
10051005

10061006
datemode = self.book.datemode
10071007
sheet = self.book.sheet_by_name(sheetname)
@@ -1017,6 +1017,8 @@ def _parse_xls(self, sheetname, header=0, skiprows=None, index_col=None,
10171017
value = time(*dt[3:])
10181018
else:
10191019
value = datetime(*dt)
1020+
if typ == XL_CELL_ERROR:
1021+
value = np.nan
10201022
row.append(value)
10211023
data.append(row)
10221024

pandas/io/tests/test3.xls

22.5 KB
Binary file not shown.

pandas/io/tests/test_parsers.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,17 @@ def test_excel_stop_iterator(self):
376376
parsed = excel_data.parse('Sheet1')
377377
expected = DataFrame([['aaaa','bbbbb']], columns=['Test', 'Test1'])
378378
assert_frame_equal(parsed, expected)
379+
380+
def test_excel_cell_error_na(self):
381+
try:
382+
import xlrd
383+
except ImportError:
384+
raise nose.SkipTest('xlrd not installed, skipping')
385+
386+
excel_data = ExcelFile(os.path.join(self.dirpath, 'test3.xls'))
387+
parsed = excel_data.parse('Sheet1')
388+
expected = DataFrame([[np.nan]], columns=['Test'])
389+
assert_frame_equal(parsed, expected)
379390

380391
def test_excel_table(self):
381392
try:

0 commit comments

Comments
 (0)