Skip to content

Commit 6a7c11c

Browse files
committed
ENH: more flexibility in parser dtype specification. close #1858
1 parent a25ffc3 commit 6a7c11c

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

pandas/io/tests/test_cparser.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -258,10 +258,20 @@ def _make_reader(**kwds):
258258

259259
reader = _make_reader(dtype={'one': 'u1', 1: 'S1'})
260260
result = reader.read()
261-
262261
self.assert_(result[0].dtype == 'u1')
263262
self.assert_(result[1].dtype == 'S1')
264263

264+
reader = _make_reader(dtype={'one': np.uint8, 1: object})
265+
result = reader.read()
266+
self.assert_(result[0].dtype == 'u1')
267+
self.assert_(result[1].dtype == 'O')
268+
269+
reader = _make_reader(dtype={'one': np.dtype('u1'),
270+
1: np.dtype('O')})
271+
result = reader.read()
272+
self.assert_(result[0].dtype == 'u1')
273+
self.assert_(result[1].dtype == 'O')
274+
265275
def test_usecols(self):
266276
data = """\
267277
a,b,c

pandas/src/parser.pyx

+6-2
Original file line numberDiff line numberDiff line change
@@ -820,8 +820,12 @@ cdef class TextReader:
820820
col_dtype = self.dtype
821821

822822
if col_dtype is not None:
823-
if isinstance(col_dtype, np.dtype):
824-
col_dtype = col_dtype.str
823+
if not isinstance(col_dtype, basestring):
824+
if isinstance(col_dtype, np.dtype):
825+
col_dtype = col_dtype.str
826+
else:
827+
col_dtype = np.dtype(col_dtype).str
828+
825829
return self._convert_with_dtype(col_dtype, i, start, end,
826830
na_filter, na_hashset)
827831

0 commit comments

Comments
 (0)