10
10
from pandas .core .api import DateRange , DataFrame , Index , Series
11
11
from pandas .core .datetools import bday
12
12
13
- from pandas .core .tests .common import assert_almost_equal
13
+ from pandas .core .tests .common import assert_almost_equal , randn
14
14
import pandas .core .tests .common as common
15
15
16
16
#-------------------------------------------------------------------------------
@@ -42,8 +42,8 @@ def setUp(self):
42
42
}
43
43
44
44
def test_constructor (self ):
45
-
46
- self .assertRaises ( Exception , DataFrame )
45
+ df = DataFrame ()
46
+ self .assert_ ( len ( df . index ) == 0 )
47
47
48
48
def test_constructor_mixed (self ):
49
49
index , data = common .getMixedTypeDict ()
@@ -75,7 +75,7 @@ def test_fromDict(self):
75
75
# can't cast to float
76
76
test_data = {
77
77
'A' : dict (zip (range (20 ), common .makeDateIndex (20 ))),
78
- 'B' : dict (zip (range (15 ), common . randn (15 )))
78
+ 'B' : dict (zip (range (15 ), randn (15 )))
79
79
}
80
80
frame = self .klass .fromDict (test_data )
81
81
self .assertEqual (len (frame ), 20 )
@@ -87,9 +87,21 @@ def test_fromDict(self):
87
87
self .assertEqual (len (self .klass .fromDict ()), 0 )
88
88
self .assertRaises (Exception , self .klass .fromDict , [self .ts1 , self .ts2 ])
89
89
90
+ # Length-one dict micro-optimization
91
+ frame = self .klass .fromDict ({'A' : {'1' : 1 , '2' : 2 }})
92
+ self .assert_ (np .array_equal (frame .index , ['1' , '2' ]))
93
+
90
94
def test_toDict (self ):
91
- pass
95
+ test_data = {
96
+ 'A' : {'1' : 1 , '2' : 2 },
97
+ 'B' : {'1' : '1' , '2' : '2' , '3' : '3' },
98
+ }
99
+ recons_data = self .klass .fromDict (test_data , castFloat = False ).toDict ()
92
100
101
+ for k , v in test_data .iteritems ():
102
+ for k2 , v2 in v .iteritems ():
103
+ self .assertEqual (v2 , recons_data [k ][k2 ])
104
+
93
105
def test_fromRecords (self ):
94
106
# from numpy documentation
95
107
arr = np .zeros ((2 ,),dtype = ('i4,f4,a10' ))
@@ -118,8 +130,12 @@ def test_fromMatrix(self):
118
130
mat , ['A' , 'B' ], [1 , 2 ])
119
131
120
132
def test_nonzero (self ):
121
- pass
133
+ empty = DataFrame ({})
134
+
135
+ self .assertFalse (empty )
122
136
137
+ self .assert_ (self .frame )
138
+
123
139
def test_repr (self ):
124
140
# small one
125
141
foo = repr (self .frame )
@@ -133,7 +149,7 @@ def test_repr(self):
133
149
foo = repr (self .mixed_frame )
134
150
135
151
# big mixed
136
- biggie = self .klass ({'A' : common . randn (1000 ),
152
+ biggie = self .klass ({'A' : randn (1000 ),
137
153
'B' : common .makeStringIndex (1000 )},
138
154
index = range (1000 ))
139
155
foo = repr (biggie )
@@ -187,7 +203,12 @@ def test_setitem(self):
187
203
assert ((self .frame ['col8' ] == 'foo' ).all ())
188
204
189
205
self .assertRaises (Exception , self .frame .__setitem__ ,
190
- common .randn (len (self .frame ) + 1 ))
206
+ randn (len (self .frame ) + 1 ))
207
+
208
+ # set ndarray
209
+ arr = randn (len (self .frame ))
210
+ self .frame ['col9' ] = arr
211
+ self .assert_ ((self .frame ['col9' ] == arr ).all ())
191
212
192
213
def test_delitem (self ):
193
214
del self .frame ['A' ]
@@ -349,6 +370,7 @@ def test_pivot(self):
349
370
350
371
def test_reindex (self ):
351
372
newFrame = self .frame .reindex (self .ts1 .index )
373
+
352
374
for col in newFrame .cols ():
353
375
for idx , val in newFrame [col ].iteritems ():
354
376
if idx in self .frame .index :
@@ -358,12 +380,15 @@ def test_reindex(self):
358
380
self .assertEqual (val , self .frame [col ][idx ])
359
381
else :
360
382
self .assert_ (np .isnan (val ))
383
+
361
384
for col , series in newFrame .iteritems ():
362
385
self .assert_ (common .equalContents (series .index , newFrame .index ))
363
386
emptyFrame = self .frame .reindex (Index ([]))
364
387
self .assert_ (len (emptyFrame .index ) == 0 )
365
388
389
+ # Cython code should be unit-tested directly
366
390
nonContigFrame = self .frame .reindex (self .ts1 .index [::2 ])
391
+
367
392
for col in nonContigFrame .cols ():
368
393
for idx , val in nonContigFrame [col ].iteritems ():
369
394
if idx in self .frame .index :
@@ -373,9 +398,23 @@ def test_reindex(self):
373
398
self .assertEqual (val , self .frame [col ][idx ])
374
399
else :
375
400
self .assert_ (np .isnan (val ))
401
+
376
402
for col , series in nonContigFrame .iteritems ():
377
403
self .assert_ (common .equalContents (series .index , nonContigFrame .index ))
378
404
405
+ # corner cases
406
+
407
+ # Same index, copies values
408
+ newFrame = self .frame .reindex (self .frame .index )
409
+ self .assert_ (newFrame .index is self .frame .index )
410
+
411
+ # length zero
412
+ newFrame = self .frame .reindex ([])
413
+ self .assert_ (not newFrame )
414
+
415
+ def test_reindex_mixed (self ):
416
+ pass
417
+
379
418
def test_transpose (self ):
380
419
frame = self .frame
381
420
dft = frame .T
0 commit comments