@@ -1329,6 +1329,8 @@ def create_index(self):
1329
1329
return CategoricalIndex (list ('aabbcdefg' ))
1330
1330
1331
1331
def test_construction (self ):
1332
+
1333
+ categories = list ('abcd' )
1332
1334
idx = self .create_index ()
1333
1335
1334
1336
result = Index (idx )
@@ -1337,23 +1339,28 @@ def test_construction(self):
1337
1339
result = Index (idx .values )
1338
1340
self .assertTrue (result .equals (idx ))
1339
1341
1342
+ # empty
1343
+ result = CategoricalIndex (categories = categories )
1344
+ self .assertTrue (result .categories .equals (Index (categories )))
1345
+ self .assert_numpy_array_equal (result .codes ,np .array ([],dtype = 'int8' ))
1346
+
1340
1347
# passing categories
1341
- result = CategoricalIndex (list ('aabbca' ),categories = list ( 'abcd' ) )
1342
- self .assertTrue (result .categories .equals (Index (list ( 'abcd' ) )))
1348
+ result = CategoricalIndex (list ('aabbca' ),categories = categories )
1349
+ self .assertTrue (result .categories .equals (Index (categories )))
1343
1350
self .assert_numpy_array_equal (result .codes ,np .array ([0 ,0 ,1 ,1 ,2 ,0 ],dtype = 'int8' ))
1344
1351
1345
1352
c = pd .Categorical (list ('aabbca' ))
1346
1353
result = CategoricalIndex (c )
1347
1354
self .assertTrue (result .categories .equals (Index (list ('abc' ))))
1348
1355
self .assert_numpy_array_equal (result .codes ,np .array ([0 ,0 ,1 ,1 ,2 ,0 ],dtype = 'int8' ))
1349
1356
1350
- result = CategoricalIndex (c ,categories = list ( 'abcd' ) )
1351
- self .assertTrue (result .categories .equals (Index (list ( 'abcd' ) )))
1357
+ result = CategoricalIndex (c ,categories = categories )
1358
+ self .assertTrue (result .categories .equals (Index (categories )))
1352
1359
self .assert_numpy_array_equal (result .codes ,np .array ([0 ,0 ,1 ,1 ,2 ,0 ],dtype = 'int8' ))
1353
1360
1354
1361
ci = CategoricalIndex (c ,categories = list ('abcd' ))
1355
1362
result = CategoricalIndex (ci )
1356
- self .assertTrue (result .categories .equals (Index (list ( 'abcd' ) )))
1363
+ self .assertTrue (result .categories .equals (Index (categories )))
1357
1364
self .assert_numpy_array_equal (result .codes ,np .array ([0 ,0 ,1 ,1 ,2 ,0 ],dtype = 'int8' ))
1358
1365
1359
1366
result = CategoricalIndex (ci , categories = list ('ab' ))
@@ -1368,6 +1375,74 @@ def test_construction(self):
1368
1375
self .assertIsInstance (result , Index )
1369
1376
self .assertNotIsInstance (result , CategoricalIndex )
1370
1377
1378
+ def test_append (self ):
1379
+
1380
+ categories = list ('cab' )
1381
+ ci = CategoricalIndex (list ('aabbca' ), categories = categories )
1382
+
1383
+ # append cats with the same categories
1384
+ result = ci [:3 ].append (ci [3 :])
1385
+ self .assertTrue (result .equals (ci ))
1386
+
1387
+ foos = [ci [:1 ], ci [1 :3 ], ci [3 :]]
1388
+ result = foos [0 ].append (foos [1 :])
1389
+ self .assertTrue (result .equals (ci ))
1390
+
1391
+ # empty
1392
+ result = ci .append ([])
1393
+ self .assertTrue (result .equals (ci ))
1394
+
1395
+ # appending with different categories
1396
+ self .assertRaises (ValueError , lambda : ci .append (ci .values .reorder_categories (list ('abc' ))))
1397
+
1398
+ # with objects
1399
+ result = ci .append (['c' ,'a' ])
1400
+ expected = CategoricalIndex (list ('aabbcaca' ), categories = categories )
1401
+ self .assertTrue (result .equals (expected ))
1402
+
1403
+ # invalid objects
1404
+ self .assertRaises (ValueError , lambda : ci .append (['a' ,'d' ]))
1405
+
1406
+ def test_insert (self ):
1407
+
1408
+ categories = list ('cab' )
1409
+ ci = CategoricalIndex (list ('aabbca' ), categories = categories )
1410
+
1411
+ #test 0th element
1412
+ result = ci .insert (0 , 'a' )
1413
+ expected = CategoricalIndex (list ('aaabbca' ),categories = categories )
1414
+ self .assertTrue (result .equals (expected ))
1415
+
1416
+ #test Nth element that follows Python list behavior
1417
+ result = ci .insert (- 1 , 'a' )
1418
+ expected = CategoricalIndex (list ('aabbcaa' ),categories = categories )
1419
+ self .assertTrue (result .equals (expected ))
1420
+
1421
+ #test empty
1422
+ result = CategoricalIndex (categories = categories ).insert (0 , 'a' )
1423
+ expected = CategoricalIndex (['a' ],categories = categories )
1424
+ self .assertTrue (result .equals (expected ))
1425
+
1426
+ # invalid
1427
+ self .assertRaises (ValueError , lambda : ci .insert (0 ,'d' ))
1428
+
1429
+ def test_delete (self ):
1430
+
1431
+ categories = list ('cab' )
1432
+ ci = CategoricalIndex (list ('aabbca' ), categories = categories )
1433
+
1434
+ result = ci .delete (0 )
1435
+ expected = CategoricalIndex (list ('abbca' ),categories = categories )
1436
+ self .assertTrue (result .equals (expected ))
1437
+
1438
+ result = ci .delete (- 1 )
1439
+ expected = CategoricalIndex (list ('aabbc' ),categories = categories )
1440
+ self .assertTrue (result .equals (expected ))
1441
+
1442
+ with tm .assertRaises ((IndexError , ValueError )):
1443
+ # either depeidnig on numpy version
1444
+ result = ci .delete (10 )
1445
+
1371
1446
def test_astype (self ):
1372
1447
1373
1448
idx = self .create_index ()
0 commit comments