From 761909300b1912f5bd2e610c5af27683fd81ae68 Mon Sep 17 00:00:00 2001 From: Brock Date: Fri, 26 Sep 2025 08:38:33 -0700 Subject: [PATCH] BUG: setitem with Series[pyarrow] values --- pandas/core/arrays/arrow/array.py | 1 + pandas/tests/indexing/test_iloc.py | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/pandas/core/arrays/arrow/array.py b/pandas/core/arrays/arrow/array.py index db6b58c8dbc7f..41a5cf7276e8d 100644 --- a/pandas/core/arrays/arrow/array.py +++ b/pandas/core/arrays/arrow/array.py @@ -569,6 +569,7 @@ def _box_pa_array( ------- pa.Array or pa.ChunkedArray """ + value = extract_array(value, extract_numpy=True) if isinstance(value, cls): pa_array = value._pa_array elif isinstance(value, (pa.Array, pa.ChunkedArray)): diff --git a/pandas/tests/indexing/test_iloc.py b/pandas/tests/indexing/test_iloc.py index 17aaf6a4b1108..ddb58ecbfa6f3 100644 --- a/pandas/tests/indexing/test_iloc.py +++ b/pandas/tests/indexing/test_iloc.py @@ -8,6 +8,7 @@ from pandas.compat import pa_version_under16p0 from pandas.errors import IndexingError +import pandas.util._test_decorators as td from pandas import ( NA, @@ -1535,3 +1536,15 @@ def test_iloc_arrow_extension_array(self): expected = df.iloc[:, df["c"]] result = df_arrow.iloc[:, df_arrow["c"]] tm.assert_frame_equal(result, expected, check_dtype=False) + + @td.skip_if_no("pyarrow") + def test_setitem_pyarrow_int_series(self): + # GH#62462 + ser = Series([1, 2, 3], dtype="int64[pyarrow]") + idx = Index([0, 1]) + vals = Series([7, 8], dtype="int64[pyarrow]") + + ser.iloc[idx] = vals + + expected = Series([7, 8, 3], dtype="int64[pyarrow]") + tm.assert_series_equal(ser, expected)