From d82de164e468e303e46466d44591fcf2cceffdda Mon Sep 17 00:00:00 2001 From: zhan7236 <76658920+zhan7236@users.noreply.github.com> Date: Fri, 28 Nov 2025 01:48:05 +0000 Subject: [PATCH 1/3] TST: Add regression test for DataFrame.where with nullable dtype (#49052) --- pandas/tests/frame/indexing/test_where.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index bd57166ac10da..304a0343c0679 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -1063,3 +1063,13 @@ def test_where_inplace_no_other(): assert result is df expected = DataFrame({"a": [1, np.nan], "b": [np.nan, "y"]}) tm.assert_frame_equal(df, expected) + + +def test_where_other_nullable_dtype(): + # GH#49052 DataFrame.where should return nullable dtype when + # other is a Series with nullable dtype, matching Series.where behavior + df = Series([1, 2, 3], dtype="int64").to_frame() + other = Series([pd.NA, pd.NA, pd.NA], dtype="Int64") + result = df.where(df > 1, other, axis=0) + expected = DataFrame({0: Series([pd.NA, 2, 3], dtype="Int64")}) + tm.assert_frame_equal(result, expected) From e19e415c4672253964b8f847559518c494613e10 Mon Sep 17 00:00:00 2001 From: zhan7236 <76658920+zhan7236@users.noreply.github.com> Date: Tue, 2 Dec 2025 01:20:44 +0000 Subject: [PATCH 2/3] Address review: use DataFrame constructor directly --- pandas/tests/frame/indexing/test_where.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/tests/frame/indexing/test_where.py b/pandas/tests/frame/indexing/test_where.py index 304a0343c0679..f7fd26dbb4303 100644 --- a/pandas/tests/frame/indexing/test_where.py +++ b/pandas/tests/frame/indexing/test_where.py @@ -1068,7 +1068,7 @@ def test_where_inplace_no_other(): def test_where_other_nullable_dtype(): # GH#49052 DataFrame.where should return nullable dtype when # other is a Series with nullable dtype, matching Series.where behavior - df = Series([1, 2, 3], dtype="int64").to_frame() + df = DataFrame([1, 2, 3], dtype="int64") other = Series([pd.NA, pd.NA, pd.NA], dtype="Int64") result = df.where(df > 1, other, axis=0) expected = DataFrame({0: Series([pd.NA, 2, 3], dtype="Int64")}) From e65d633f03adf63620a4a1d1af43a6c3009410cf Mon Sep 17 00:00:00 2001 From: zhan7236 <76658920+zhan7236@users.noreply.github.com> Date: Tue, 2 Dec 2025 08:28:11 +0000 Subject: [PATCH 3/3] ci: retrigger CI