diff --git a/pandas/core/internals/blocks.py b/pandas/core/internals/blocks.py index 20997bdde5da1..46c375b92dd83 100644 --- a/pandas/core/internals/blocks.py +++ b/pandas/core/internals/blocks.py @@ -1725,6 +1725,9 @@ def _unwrap_setitem_indexer(self, indexer): elif com.is_null_slice(indexer[1]): indexer = indexer[0] + elif is_list_like(indexer[1]) and indexer[1][0] == 0: + indexer = indexer[0] + else: raise NotImplementedError( "This should not be reached. Please report a bug at " diff --git a/pandas/tests/frame/indexing/test_indexing.py b/pandas/tests/frame/indexing/test_indexing.py index 642bdb127f209..9027ce8109810 100644 --- a/pandas/tests/frame/indexing/test_indexing.py +++ b/pandas/tests/frame/indexing/test_indexing.py @@ -1363,6 +1363,14 @@ def test_iloc_setitem_string_na(self, val): expected = DataFrame({"a": [pd.NA, "b", "c"]}, dtype="string") tm.assert_frame_equal(df, expected) + @pytest.mark.parametrize("func", [list, Series, np.array]) + def test_iloc_setitem_ea_null_slice_length_one_list(self, func): + # GH#48016 + df = DataFrame({"a": [1, 2, 3]}, dtype="Int64") + df.iloc[:, func([0])] = 5 + expected = DataFrame({"a": [5, 5, 5]}, dtype="Int64") + tm.assert_frame_equal(df, expected) + class TestDataFrameIndexingUInt64: def test_setitem(self, uint64_frame):