diff --git a/pandas/core/frame.py b/pandas/core/frame.py index b4f79bda25517..2c5b8e1b872a2 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -1716,7 +1716,8 @@ def to_records(self, index=True, convert_datetime64=None, # string naming a type. if dtype_mapping is None: formats.append(v.dtype) - elif isinstance(dtype_mapping, (type, compat.string_types)): + elif isinstance(dtype_mapping, (type, np.dtype, + compat.string_types)): formats.append(dtype_mapping) else: element = "row" if i < index_len else "column" diff --git a/pandas/tests/frame/test_convert_to.py b/pandas/tests/frame/test_convert_to.py index ddf85136126a1..7c49aaf295d50 100644 --- a/pandas/tests/frame/test_convert_to.py +++ b/pandas/tests/frame/test_convert_to.py @@ -10,7 +10,8 @@ from pandas.compat import long -from pandas import DataFrame, MultiIndex, Series, Timestamp, compat, date_range +from pandas import (CategoricalDtype, DataFrame, MultiIndex, Series, Timestamp, + compat, date_range) from pandas.tests.frame.common import TestData import pandas.util.testing as tm @@ -220,6 +221,12 @@ def test_to_records_with_categorical(self): dtype=[("index", "