@@ -2151,6 +2151,25 @@ 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+ result = pd .concat (deepcopy (example_dict ), names = ['testname' ])
2165+ expected_index = pd .MultiIndex (levels = [['s1' , 's2' ],
2166+ ['a' ],
2167+ ['b' , 'c' ]],
2168+ labels = [[0 , 1 ], [0 , 0 ], [0 , 1 ]],
2169+ names = ['testname' , None , None ])
2170+ expected = pd .DataFrame (np .array ([[0 ], [1 ]]), index = expected_index )
2171+ tm .assert_frame_equal (result , expected )
2172+
21542173
21552174if __name__ == '__main__' :
21562175 nose .runmodule (argv = [__file__ , '-vvs' , '-x' , '--pdb' , '--pdb-failure' ],
0 commit comments