Skip to content

Commit 4fd3202

Browse files
committed
BUG-23224 Allow integer_array to be initialized with all None
1 parent 913f71f commit 4fd3202

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

pandas/core/arrays/integer.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,12 @@ def coerce_to_array(values, dtype, mask=None, copy=False):
174174
inferred_type = infer_dtype(values)
175175
if inferred_type not in ['floating', 'integer',
176176
'mixed-integer', 'mixed-integer-float']:
177-
raise TypeError("{} cannot be converted to an IntegerDtype".format(
178-
values.dtype))
177+
if inferred_type is 'mixed' and all(isna(x) for x in values):
178+
values = np.array([np.nan] * len(values)) # GH 23224
179+
else:
180+
raise TypeError(
181+
"{} cannot be converted to an IntegerDtype".format(
182+
values.dtype))
179183

180184
elif not (is_integer_dtype(values) or is_float_dtype(values)):
181185
raise TypeError("{} cannot be converted to an IntegerDtype".format(

pandas/tests/arrays/test_integer.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,15 @@ def test_to_integer_array_float():
560560
assert result.dtype == Int64Dtype()
561561

562562

563+
@pytest.mark.parametrize(
564+
'result, expected',
565+
[
566+
(integer_array([None]), integer_array([np.nan])),
567+
(integer_array([None, np.nan]), integer_array([np.nan, np.nan]))])
568+
def test_to_integer_array_none(result, expected):
569+
tm.assert_extension_array_equal(result, expected)
570+
571+
563572
@pytest.mark.parametrize(
564573
'values, to_dtype, result_dtype',
565574
[

0 commit comments

Comments
 (0)