Skip to content

Commit e450f0c

Browse files
TST: Add regression test for MultiIndex merge after reset_index (#63256)
1 parent 03c3239 commit e450f0c

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

pandas/tests/reshape/merge/test_merge.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2936,6 +2936,41 @@ def test_merge_multiindex_single_level():
29362936
tm.assert_frame_equal(result, expected)
29372937

29382938

2939+
def test_merge_multiindex_reset_index_mixed():
2940+
# GH#62150
2941+
df = DataFrame(
2942+
{("column_1", ""): [1, 1], ("column_2", ""): [2, 2]},
2943+
index=MultiIndex.from_arrays(
2944+
[[1, 1], ["metadata_1", "metadata_2"]], names=["index", "metadata"]
2945+
),
2946+
)
2947+
2948+
df2 = DataFrame(
2949+
data=[1, 1],
2950+
index=Index([1, 1], name="index"),
2951+
columns=MultiIndex.from_product([["new_data"], [""]]),
2952+
)
2953+
2954+
with tm.assert_produces_warning(pd.errors.PerformanceWarning):
2955+
result = df.reset_index().merge(df2.reset_index(), on="index")
2956+
2957+
expected = DataFrame(
2958+
{
2959+
("index", ""): [1, 1, 1, 1],
2960+
("metadata", ""): ["metadata_1", "metadata_1", "metadata_2", "metadata_2"],
2961+
("column_1", ""): [1, 1, 1, 1],
2962+
("column_2", ""): [2, 2, 2, 2],
2963+
("new_data", ""): [1, 1, 1, 1],
2964+
}
2965+
)
2966+
expected.columns = MultiIndex.from_tuples(expected.columns)
2967+
2968+
tm.assert_frame_equal(result, expected)
2969+
2970+
result2 = df.reset_index().merge(df2.reset_index(), on=[("index", "")])
2971+
tm.assert_frame_equal(result2, expected)
2972+
2973+
29392974
@pytest.mark.parametrize("on_index", [True, False])
29402975
@pytest.mark.parametrize("left_unique", [True, False])
29412976
@pytest.mark.parametrize("left_monotonic", [True, False])

0 commit comments

Comments
 (0)