Skip to content

Commit 261d5a5

Browse files
Backport PR #38638: BUG: Fix regression in pandas merge (#38639)
Co-authored-by: patrick <[email protected]>
1 parent f15e1e0 commit 261d5a5

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

pandas/core/reshape/merge.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -859,7 +859,7 @@ def _maybe_add_join_keys(self, result, left_indexer, right_indexer):
859859
mask_right = right_indexer == -1
860860
if mask_left.all():
861861
key_col = rvals
862-
elif mask_right.all():
862+
elif right_indexer is not None and mask_right.all():
863863
key_col = lvals
864864
else:
865865
key_col = Index(lvals).where(~mask_left, rvals)

pandas/tests/reshape/merge/test_merge.py

+17
Original file line numberDiff line numberDiff line change
@@ -2349,3 +2349,20 @@ def test_merge_join_cols_error_reporting_on_and_index(func, kwargs):
23492349
)
23502350
with pytest.raises(MergeError, match=msg):
23512351
getattr(pd, func)(left, right, on="a", **kwargs)
2352+
2353+
2354+
def test_merge_right_left_index():
2355+
# GH#38616
2356+
left = DataFrame({"x": [1, 1], "z": ["foo", "foo"]})
2357+
right = DataFrame({"x": [1, 1], "z": ["foo", "foo"]})
2358+
result = pd.merge(left, right, how="right", left_index=True, right_on="x")
2359+
expected = DataFrame(
2360+
{
2361+
"x": [1, 1],
2362+
"x_x": [1, 1],
2363+
"z_x": ["foo", "foo"],
2364+
"x_y": [1, 1],
2365+
"z_y": ["foo", "foo"],
2366+
}
2367+
)
2368+
tm.assert_frame_equal(result, expected)

0 commit comments

Comments
 (0)