1
from pandas.core.daterange import DateRange
2
from pandas.core.datetools import bday
3
from pandas.core.index import Index
4
from pandas.core.series import Series
5
from pandas.lib.tseries import map_indices
6
from copy import deepcopy
7
from datetime import datetime
8
from numpy import isnan, array, NaN, alltrue
9
from numpy import random
10
from random import choice
19
return ''.join([choice(string.letters + string.digits) for i in range(n)])
20
def equalContents(arr1, arr2):
21
"""Checks if the set of unique elements of arr1 and arr2 are equivalent.
23
return frozenset(arr1) == frozenset(arr2)
25
class TestIndex(unittest.TestCase):
27
self.strIndex = Index([rands(10) for i in range(50)])
28
self.dateIndex = DateRange(datetime(2008,4,22), periods=50, offset=bday)
29
self.intIndex = Index(np.arange(50))
32
strSlice = self.strIndex[10:20]
33
dateSlice = self.dateIndex[10:20]
34
intSlice = self.intIndex[10:20]
35
strMap = map_indices(array(strSlice))
36
dateMap = map_indices(array(dateSlice))
37
intMap = map_indices(array(intSlice))
38
for key, value in strMap.iteritems():
39
self.assert_(strSlice.indexMap[key] == value)
40
for key, value in dateMap.iteritems():
41
self.assert_(dateSlice.indexMap[key] == value)
42
for key, value in intMap.iteritems():
43
self.assert_(intSlice.indexMap[key] == value)
45
def testGetItem(self):
46
sl = self.strIndex[[1,2,3]]
48
self.assertEqual(i, sl[sl.indexMap[i]])
49
boolIdx = np.repeat(True, len(self.strIndex)).astype(bool)
50
boolIdx[5:30:2] = False
51
subIndex = self.strIndex[boolIdx]
52
strMap = map_indices(subIndex)
53
for key, value in strMap.iteritems():
54
self.assert_(subIndex.indexMap[key] == value)
57
firstCat = self.strIndex + self.dateIndex
58
secondCat = self.strIndex + self.strIndex
59
self.assert_(equalContents(np.append(self.strIndex, self.dateIndex), firstCat))
60
self.assert_(equalContents(secondCat, self.strIndex))
61
for key in self.strIndex:
62
self.assert_(key in firstCat.indexMap)
63
self.assert_(key in secondCat.indexMap)
64
for key in self.dateIndex:
65
self.assert_(key in firstCat.indexMap)
67
def testContains(self):
68
self.assert_(self.strIndex[10] in self.strIndex)
69
self.assert_(self.dateIndex[10] in self.dateIndex)
70
self.assert_(self.intIndex[10] in self.intIndex)
71
strSlice = self.strIndex[10:20]
72
dateSlice = self.dateIndex[10:20]
73
intSlice = self.intIndex[10:20]
74
self.assert_(self.strIndex[9] not in strSlice)
75
self.assert_(self.dateIndex[9] not in dateSlice)
76
self.assert_(self.intIndex[9] not in intSlice)
78
def testMutability(self):
79
self.assertRaises(Exception, self.strIndex.__setitem__, 5, 0)
80
self.assertRaises(Exception, self.strIndex.__setitem__, slice(1,5), 0)
84
pickle.dump(self.strIndex, f)
87
unPickled = pickle.load(f)
90
self.assert_(isinstance(unPickled, Index))
91
self.assert_(equalContents(unPickled, self.strIndex))
92
for k, v in self.strIndex.indexMap.iteritems():
93
self.assert_(k in unPickled.indexMap)
94
self.assertEqual(unPickled.indexMap[k], v)