@@ -1144,6 +1144,35 @@ def test_concat_keys_and_levels(self):
1144
1144
self .assertEqual (result .index .names , ['first' , 'second' ] + [None ])
1145
1145
self .assert_ (np .array_equal (result .index .levels [0 ], ['baz' , 'foo' ]))
1146
1146
1147
+ def test_concat_keys_levels_no_overlap (self ):
1148
+ # GH #1406
1149
+ df = DataFrame (np .random .randn (1 , 3 ), index = ['a' ])
1150
+ df2 = DataFrame (np .random .randn (1 , 4 ), index = ['b' ])
1151
+
1152
+ self .assertRaises (ValueError , concat , [df , df ],
1153
+ keys = ['one' , 'two' ], levels = [['foo' , 'bar' , 'baz' ]])
1154
+
1155
+ self .assertRaises (ValueError , concat , [df , df2 ],
1156
+ keys = ['one' , 'two' ], levels = [['foo' , 'bar' , 'baz' ]])
1157
+
1158
+
1159
+ def test_concat_rename_index (self ):
1160
+ a = DataFrame (np .random .rand (3 ,3 ),
1161
+ columns = list ('ABC' ),
1162
+ index = Index (list ('abc' ), name = 'index_a' ))
1163
+ b = DataFrame (np .random .rand (3 ,3 ),
1164
+ columns = list ('ABC' ),
1165
+ index = Index (list ('abc' ), name = 'index_b' ))
1166
+
1167
+ result = concat ([a , b ], keys = ['key0' , 'key1' ],
1168
+ names = ['lvl0' , 'lvl1' ])
1169
+
1170
+ exp = concat ([a , b ], keys = ['key0' , 'key1' ], names = ['lvl0' ])
1171
+ exp .index .names [1 ] = 'lvl1'
1172
+
1173
+ tm .assert_frame_equal (result , exp )
1174
+ self .assertEqual (result .index .names , exp .index .names )
1175
+
1147
1176
def test_crossed_dtypes_weird_corner (self ):
1148
1177
columns = ['A' , 'B' , 'C' , 'D' ]
1149
1178
df1 = DataFrame ({'A' : np .array ([1 , 2 , 3 , 4 ], dtype = 'f8' ),
@@ -1163,6 +1192,11 @@ def test_crossed_dtypes_weird_corner(self):
1163
1192
columns = columns )
1164
1193
tm .assert_frame_equal (appended , expected )
1165
1194
1195
+ df = DataFrame (np .random .randn (1 , 3 ), index = ['a' ])
1196
+ df2 = DataFrame (np .random .randn (1 , 4 ), index = ['b' ])
1197
+ result = concat ([df , df2 ], keys = ['one' , 'two' ], names = ['first' , 'second' ])
1198
+ self .assertEqual (result .index .names , ['first' , 'second' ])
1199
+
1166
1200
def test_handle_empty_objects (self ):
1167
1201
df = DataFrame (np .random .randn (10 , 4 ), columns = list ('abcd' ))
1168
1202
@@ -1334,23 +1368,6 @@ def test_concat_exclude_none(self):
1334
1368
tm .assert_frame_equal (result , df )
1335
1369
self .assertRaises (Exception , concat , [None , None ])
1336
1370
1337
- def test_concat_rename_index (self ):
1338
- a = DataFrame (np .random .rand (3 ,3 ),
1339
- columns = list ('ABC' ),
1340
- index = Index (list ('abc' ), name = 'index_a' ))
1341
- b = DataFrame (np .random .rand (3 ,3 ),
1342
- columns = list ('ABC' ),
1343
- index = Index (list ('abc' ), name = 'index_b' ))
1344
-
1345
- result = concat ([a , b ], keys = ['key0' , 'key1' ],
1346
- names = ['lvl0' , 'lvl1' ])
1347
-
1348
- exp = concat ([a , b ], keys = ['key0' , 'key1' ], names = ['lvl0' ])
1349
- exp .index .names [1 ] = 'lvl1'
1350
-
1351
- tm .assert_frame_equal (result , exp )
1352
- self .assertEqual (result .index .names , exp .index .names )
1353
-
1354
1371
class TestOrderedMerge (unittest .TestCase ):
1355
1372
1356
1373
def setUp (self ):
0 commit comments