@@ -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