@@ -35,10 +35,35 @@ def setUp(self):
35
35
self .frame = DataFrame (np .random .randn (10 , 3 ), index = index ,
36
36
columns = ['A' , 'B' , 'C' ])
37
37
38
+ tm .N = 100
38
39
self .tdf = tm .makeTimeDataFrame ()
39
40
self .ymd = self .tdf .groupby ([lambda x : x .year , lambda x : x .month ,
40
41
lambda x : x .day ]).sum ()
41
42
43
+ def test_pickle (self ):
44
+ import cPickle
45
+ def _test_roundtrip (frame ):
46
+ pickled = cPickle .dumps (frame )
47
+ unpickled = cPickle .loads (pickled )
48
+ assert_frame_equal (frame , unpickled )
49
+
50
+ _test_roundtrip (self .frame )
51
+ _test_roundtrip (self .frame .T )
52
+ _test_roundtrip (self .ymd )
53
+ _test_roundtrip (self .ymd .T )
54
+
55
+ def test_repr_to_string (self ):
56
+ repr (self .frame )
57
+ repr (self .ymd )
58
+ repr (self .frame .T )
59
+ repr (self .ymd .T )
60
+
61
+ buf = StringIO ()
62
+ self .frame .toString (buf = buf )
63
+ self .ymd .toString (buf = buf )
64
+ self .frame .T .toString (buf = buf )
65
+ self .ymd .T .toString (buf = buf )
66
+
42
67
def test_getitem_simple (self ):
43
68
df = self .frame .T
44
69
@@ -80,9 +105,12 @@ def test_getitem_toplevel(self):
80
105
assert_frame_equal (result , expected )
81
106
82
107
result = df ['bar' ]
108
+ result2 = df .ix [:, 'bar' ]
109
+
83
110
expected = df .reindex (columns = df .columns [3 :5 ])
84
111
expected .columns = expected .columns .droplevel (0 )
85
112
assert_frame_equal (result , expected )
113
+ assert_frame_equal (result , result2 )
86
114
87
115
def test_getitem_partial (self ):
88
116
ymd = self .ymd .T
@@ -92,11 +120,47 @@ def test_getitem_partial(self):
92
120
expected .columns = expected .columns .droplevel (0 ).droplevel (0 )
93
121
assert_frame_equal (result , expected )
94
122
123
+ def test_setitem_change_dtype (self ):
124
+ dft = self .frame .T
125
+ s = dft ['foo' , 'two' ]
126
+ dft ['foo' , 'two' ] = s > s .median ()
127
+ assert_series_equal (dft ['foo' , 'two' ], s > s .median ())
128
+ self .assert_ (isinstance (dft ._data .blocks [1 ].items , MultiIndex ))
129
+
130
+ reindexed = dft .reindex (columns = [('foo' , 'two' )])
131
+ assert_series_equal (reindexed ['foo' , 'two' ], s > s .median ())
132
+
95
133
def test_fancy_slice_partial (self ):
96
- pass
134
+ result = self .frame .ix ['bar' :'baz' ]
135
+ expected = self .frame [3 :7 ]
136
+ assert_frame_equal (result , expected )
97
137
98
- def test_fancy_select_toplevel (self ):
99
- pass
138
+ result = self .ymd .ix [(2000 ,2 ):(2000 ,4 )]
139
+ lev = self .ymd .index .labels [1 ]
140
+ expected = self .ymd [(lev >= 1 ) & (lev <= 3 )]
141
+ assert_frame_equal (result , expected )
142
+
143
+ def test_sortlevel (self ):
144
+ df = self .frame .copy ()
145
+ df .index = np .arange (len (df ))
146
+ self .assertRaises (Exception , df .sortlevel , 0 )
147
+
148
+ # axis=1
149
+
150
+ def test_sortlevel_mixed (self ):
151
+ sorted_before = self .frame .sortlevel (1 )
152
+
153
+ df = self .frame .copy ()
154
+ df ['foo' ] = 'bar'
155
+ sorted_after = df .sortlevel (1 )
156
+ assert_frame_equal (sorted_before , sorted_after .drop (['foo' ], axis = 1 ))
157
+
158
+ dft = self .frame .T
159
+ sorted_before = dft .sortlevel (1 , axis = 1 )
160
+ dft ['foo' , 'three' ] = 'bar'
161
+
162
+ sorted_after = dft .sortlevel (1 , axis = 1 )
163
+ assert_frame_equal (sorted_before , sorted_after .drop (['foo' ], axis = 1 ))
100
164
101
165
def test_alignment (self ):
102
166
pass
0 commit comments