diff --git a/pandas/_libs/parsers.pyx b/pandas/_libs/parsers.pyx index 00e53b7c7cdad..51294037f4cd7 100644 --- a/pandas/_libs/parsers.pyx +++ b/pandas/_libs/parsers.pyx @@ -1414,6 +1414,9 @@ def _maybe_upcast(arr, use_nullable_dtypes: bool = False): ------- The casted array. """ + if is_extension_array_dtype(arr.dtype): + return arr + na_value = na_values[arr.dtype] if issubclass(arr.dtype.type, np.integer): diff --git a/pandas/tests/io/parser/dtypes/test_dtypes_basic.py b/pandas/tests/io/parser/dtypes/test_dtypes_basic.py index 345da0bca8668..e2c7f77aae815 100644 --- a/pandas/tests/io/parser/dtypes/test_dtypes_basic.py +++ b/pandas/tests/io/parser/dtypes/test_dtypes_basic.py @@ -466,3 +466,14 @@ def test_use_nullabla_dtypes_string(all_parsers, storage): } ) tm.assert_frame_equal(result, expected) + + +def test_use_nullable_dtypes_ea_dtype_specified(all_parsers): + # GH#491496 + data = """a,b +1,2 +""" + parser = all_parsers + result = parser.read_csv(StringIO(data), dtype="Int64", use_nullable_dtypes=True) + expected = DataFrame({"a": [1], "b": 2}, dtype="Int64") + tm.assert_frame_equal(result, expected)