Skip to content

Commit 9040423

Browse files
phofljorisvandenbosschensarang
authored
Backport PR #47946: REGR: fix error caused by deprecation warning in pd.merge when joining two Series (#48154)
Co-authored-by: Patrick Hoefler <[email protected]> Co-authored-by: Joris Van den Bossche <[email protected]> Co-authored-by: Nima Sarang <[email protected]>
1 parent 233ebdf commit 9040423

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

doc/source/whatsnew/v1.4.4.rst

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Fixed regressions
1919
- Fixed regression in :meth:`DataFrame.loc` not updating the cache correctly after values were set (:issue:`47867`)
2020
- Fixed regression in :meth:`DataFrame.loc` not aligning index in some cases when setting a :class:`DataFrame` (:issue:`47578`)
2121
- Fixed regression in setting ``None`` or non-string value into a ``string``-dtype Series using a mask (:issue:`47628`)
22+
- Fixed regression in :func:`merge` throwing an error when passing a :class:`Series` with a multi-level name (:issue:`47946`)
2223
- Fixed regression in :meth:`DataFrame.eval` creating a copy when updating inplace (:issue:`47449`)
2324
-
2425

pandas/core/reshape/merge.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -672,8 +672,8 @@ def __init__(
672672
if _left.columns.nlevels != _right.columns.nlevels:
673673
msg = (
674674
"merging between different levels is deprecated and will be removed "
675-
f"in a future version. ({left.columns.nlevels} levels on the left, "
676-
f"{right.columns.nlevels} on the right)"
675+
f"in a future version. ({_left.columns.nlevels} levels on the left, "
676+
f"{_right.columns.nlevels} on the right)"
677677
)
678678
# stacklevel chosen to be correct when this is reached via pd.merge
679679
# (and not DataFrame.join)

pandas/tests/reshape/merge/test_merge.py

+20
Original file line numberDiff line numberDiff line change
@@ -2155,6 +2155,26 @@ def test_merge_series(on, left_on, right_on, left_index, right_index, nm):
21552155
)
21562156

21572157

2158+
def test_merge_series_multilevel():
2159+
# GH#47946
2160+
a = DataFrame(
2161+
{"A": [1, 2, 3, 4]},
2162+
index=MultiIndex.from_product([["a", "b"], [0, 1]], names=["outer", "inner"]),
2163+
)
2164+
b = Series(
2165+
[1, 2, 3, 4],
2166+
index=MultiIndex.from_product([["a", "b"], [1, 2]], names=["outer", "inner"]),
2167+
name=("B", "C"),
2168+
)
2169+
expected = DataFrame(
2170+
{"A": [2, 4], ("B", "C"): [1, 3]},
2171+
index=MultiIndex.from_product([["a", "b"], [1]], names=["outer", "inner"]),
2172+
)
2173+
with tm.assert_produces_warning(FutureWarning):
2174+
result = merge(a, b, on=["outer", "inner"])
2175+
tm.assert_frame_equal(result, expected)
2176+
2177+
21582178
@pytest.mark.parametrize(
21592179
"col1, col2, kwargs, expected_cols",
21602180
[

0 commit comments

Comments
 (0)