@@ -2151,6 +2151,27 @@ def test_concat_multiindex_rangeindex(self):
21512151 exp = df .iloc [[2 , 3 , 4 , 5 ], :]
21522152 tm .assert_frame_equal (res , exp )
21532153
2154+ def test_concat_multiindex_dfs_with_deepcopy (self ):
2155+ # GH 9967
2156+ from copy import deepcopy
2157+ example_multiindex1 = pd .MultiIndex .from_product ([['a' ], ['b' ]])
2158+ example_dataframe1 = pd .DataFrame ([0 ], index = example_multiindex1 )
2159+
2160+ example_multiindex2 = pd .MultiIndex .from_product ([['a' ], ['c' ]])
2161+ example_dataframe2 = pd .DataFrame ([1 ], index = example_multiindex2 )
2162+
2163+ example_dict = {'s1' : example_dataframe1 , 's2' : example_dataframe2 }
2164+ expected_index = pd .MultiIndex (levels = [['s1' , 's2' ],
2165+ ['a' ],
2166+ ['b' , 'c' ]],
2167+ labels = [[0 , 1 ], [0 , 0 ], [0 , 1 ]],
2168+ names = ['testname' , None , None ])
2169+ expected = pd .DataFrame ([[0 ], [1 ]], index = expected_index )
2170+ result_copy = pd .concat (deepcopy (example_dict ), names = ['testname' ])
2171+ tm .assert_frame_equal (result_copy , expected )
2172+ result_no_copy = pd .concat (example_dict , names = ['testname' ])
2173+ tm .assert_frame_equal (result_no_copy , expected )
2174+
21542175
21552176if __name__ == '__main__' :
21562177 nose .runmodule (argv = [__file__ , '-vvs' , '-x' , '--pdb' , '--pdb-failure' ],
0 commit comments