Skip to content

Commit 0db7bd9

Browse files
authored
BUG: Fix regression in pandas merge (#38638)
1 parent 4dff397 commit 0db7bd9

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
@@ -865,7 +865,7 @@ def _maybe_add_join_keys(self, result, left_indexer, right_indexer):
865865
mask_right = right_indexer == -1
866866
if mask_left.all():
867867
key_col = rvals
868-
elif mask_right.all():
868+
elif right_indexer is not None and mask_right.all():
869869
key_col = lvals
870870
else:
871871
key_col = Index(lvals).where(~mask_left, rvals)

pandas/tests/reshape/merge/test_merge.py

+17
Original file line numberDiff line numberDiff line change
@@ -2357,3 +2357,20 @@ def test_merge_join_cols_error_reporting_on_and_index(func, kwargs):
23572357
)
23582358
with pytest.raises(MergeError, match=msg):
23592359
getattr(pd, func)(left, right, on="a", **kwargs)
2360+
2361+
2362+
def test_merge_right_left_index():
2363+
# GH#38616
2364+
left = DataFrame({"x": [1, 1], "z": ["foo", "foo"]})
2365+
right = DataFrame({"x": [1, 1], "z": ["foo", "foo"]})
2366+
result = pd.merge(left, right, how="right", left_index=True, right_on="x")
2367+
expected = DataFrame(
2368+
{
2369+
"x": [1, 1],
2370+
"x_x": [1, 1],
2371+
"z_x": ["foo", "foo"],
2372+
"x_y": [1, 1],
2373+
"z_y": ["foo", "foo"],
2374+
}
2375+
)
2376+
tm.assert_frame_equal(result, expected)

0 commit comments

Comments
 (0)