@@ -1335,6 +1335,65 @@ def test_to_panel_duplicates(self):
1335
1335
idf = df .set_index (['a' , 'b' ])
1336
1336
assertRaisesRegexp (ValueError , 'non-uniquely indexed' , idf .to_panel )
1337
1337
1338
+ def test_panel_dups (self ):
1339
+
1340
+ # GH 4960
1341
+ # duplicates in an index
1342
+
1343
+ # items
1344
+ data = np .random .randn (5 , 100 , 5 )
1345
+ no_dup_panel = Panel (data , items = list ("ABCDE" ))
1346
+ panel = Panel (data , items = list ("AACDE" ))
1347
+
1348
+ expected = no_dup_panel ['A' ]
1349
+ result = panel .iloc [0 ]
1350
+ assert_frame_equal (result , expected )
1351
+
1352
+ expected = no_dup_panel ['E' ]
1353
+ result = panel .loc ['E' ]
1354
+ assert_frame_equal (result , expected )
1355
+
1356
+ expected = no_dup_panel .loc [['A' ,'B' ]]
1357
+ expected .items = ['A' ,'A' ]
1358
+ result = panel .loc ['A' ]
1359
+ assert_panel_equal (result , expected )
1360
+
1361
+ # major
1362
+ data = np .random .randn (5 , 5 , 5 )
1363
+ no_dup_panel = Panel (data , major_axis = list ("ABCDE" ))
1364
+ panel = Panel (data , major_axis = list ("AACDE" ))
1365
+
1366
+ expected = no_dup_panel .loc [:,'A' ]
1367
+ result = panel .iloc [:,0 ]
1368
+ assert_frame_equal (result , expected )
1369
+
1370
+ expected = no_dup_panel .loc [:,'E' ]
1371
+ result = panel .loc [:,'E' ]
1372
+ assert_frame_equal (result , expected )
1373
+
1374
+ expected = no_dup_panel .loc [:,['A' ,'B' ]]
1375
+ expected .major_axis = ['A' ,'A' ]
1376
+ result = panel .loc [:,'A' ]
1377
+ assert_panel_equal (result , expected )
1378
+
1379
+ # minor
1380
+ data = np .random .randn (5 , 100 , 5 )
1381
+ no_dup_panel = Panel (data , minor_axis = list ("ABCDE" ))
1382
+ panel = Panel (data , minor_axis = list ("AACDE" ))
1383
+
1384
+ expected = no_dup_panel .loc [:,:,'A' ]
1385
+ result = panel .iloc [:,:,0 ]
1386
+ assert_frame_equal (result , expected )
1387
+
1388
+ expected = no_dup_panel .loc [:,:,'E' ]
1389
+ result = panel .loc [:,:,'E' ]
1390
+ assert_frame_equal (result , expected )
1391
+
1392
+ expected = no_dup_panel .loc [:,:,['A' ,'B' ]]
1393
+ expected .minor_axis = ['A' ,'A' ]
1394
+ result = panel .loc [:,:,'A' ]
1395
+ assert_panel_equal (result , expected )
1396
+
1338
1397
def test_filter (self ):
1339
1398
pass
1340
1399
0 commit comments