@@ -2151,6 +2151,27 @@ def test_concat_multiindex_rangeindex(self):
2151
2151
exp = df .iloc [[2 , 3 , 4 , 5 ], :]
2152
2152
tm .assert_frame_equal (res , exp )
2153
2153
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
+
2154
2175
2155
2176
if __name__ == '__main__' :
2156
2177
nose .runmodule (argv = [__file__ , '-vvs' , '-x' , '--pdb' , '--pdb-failure' ],
0 commit comments