@@ -88,15 +88,6 @@ def test_missing_minp_zero():
88
88
tm .assert_series_equal (result , expected )
89
89
90
90
91
- @pytest .mark .parametrize ("klass" , [pd .Series , pd .DataFrame ])
92
- def test_iter_raises (klass ):
93
- # https://github.com/pandas-dev/pandas/issues/11704
94
- # Iteration over a Window
95
- obj = klass ([1 , 2 , 3 , 4 ])
96
- with pytest .raises (NotImplementedError ):
97
- iter (obj .expanding (2 ))
98
-
99
-
100
91
def test_expanding_axis (axis_frame ):
101
92
# see gh-23372.
102
93
df = DataFrame (np .ones ((10 , 20 )))
@@ -131,3 +122,91 @@ def test_expanding_count_default_min_periods_with_null_values(constructor):
131
122
result = constructor (values ).expanding ().count ()
132
123
expected = constructor (expected_counts )
133
124
tm .assert_equal (result , expected )
125
+
126
+
127
+ @pytest .mark .parametrize (
128
+ "df,expected,min_periods" ,
129
+ [
130
+ (
131
+ DataFrame ({"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}),
132
+ [
133
+ ({"A" : [1 ], "B" : [4 ]}, [0 ]),
134
+ ({"A" : [1 , 2 ], "B" : [4 , 5 ]}, [0 , 1 ]),
135
+ ({"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}, [0 , 1 , 2 ]),
136
+ ],
137
+ 3 ,
138
+ ),
139
+ (
140
+ DataFrame ({"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}),
141
+ [
142
+ ({"A" : [1 ], "B" : [4 ]}, [0 ]),
143
+ ({"A" : [1 , 2 ], "B" : [4 , 5 ]}, [0 , 1 ]),
144
+ ({"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}, [0 , 1 , 2 ]),
145
+ ],
146
+ 2 ,
147
+ ),
148
+ (
149
+ DataFrame ({"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}),
150
+ [
151
+ ({"A" : [1 ], "B" : [4 ]}, [0 ]),
152
+ ({"A" : [1 , 2 ], "B" : [4 , 5 ]}, [0 , 1 ]),
153
+ ({"A" : [1 , 2 , 3 ], "B" : [4 , 5 , 6 ]}, [0 , 1 , 2 ]),
154
+ ],
155
+ 1 ,
156
+ ),
157
+ (DataFrame ({"A" : [1 ], "B" : [4 ]}), [], 2 ),
158
+ (DataFrame (), [({}, [])], 1 ),
159
+ (
160
+ DataFrame ({"A" : [1 , np .nan , 3 ], "B" : [np .nan , 5 , 6 ]}),
161
+ [
162
+ ({"A" : [1.0 ], "B" : [np .nan ]}, [0 ]),
163
+ ({"A" : [1 , np .nan ], "B" : [np .nan , 5 ]}, [0 , 1 ]),
164
+ ({"A" : [1 , np .nan , 3 ], "B" : [np .nan , 5 , 6 ]}, [0 , 1 , 2 ]),
165
+ ],
166
+ 3 ,
167
+ ),
168
+ (
169
+ DataFrame ({"A" : [1 , np .nan , 3 ], "B" : [np .nan , 5 , 6 ]}),
170
+ [
171
+ ({"A" : [1.0 ], "B" : [np .nan ]}, [0 ]),
172
+ ({"A" : [1 , np .nan ], "B" : [np .nan , 5 ]}, [0 , 1 ]),
173
+ ({"A" : [1 , np .nan , 3 ], "B" : [np .nan , 5 , 6 ]}, [0 , 1 , 2 ]),
174
+ ],
175
+ 2 ,
176
+ ),
177
+ (
178
+ DataFrame ({"A" : [1 , np .nan , 3 ], "B" : [np .nan , 5 , 6 ]}),
179
+ [
180
+ ({"A" : [1.0 ], "B" : [np .nan ]}, [0 ]),
181
+ ({"A" : [1 , np .nan ], "B" : [np .nan , 5 ]}, [0 , 1 ]),
182
+ ({"A" : [1 , np .nan , 3 ], "B" : [np .nan , 5 , 6 ]}, [0 , 1 , 2 ]),
183
+ ],
184
+ 1 ,
185
+ ),
186
+ ],
187
+ )
188
+ def test_iter_expanding_dataframe (df , expected , min_periods ):
189
+ # GH 11704
190
+ expected = [DataFrame (values , index = index ) for (values , index ) in expected ]
191
+
192
+ for (expected , actual ) in zip (expected , df .expanding (min_periods )):
193
+ tm .assert_frame_equal (actual , expected )
194
+
195
+
196
+ @pytest .mark .parametrize (
197
+ "ser,expected,min_periods" ,
198
+ [
199
+ (Series ([1 , 2 , 3 ]), [([1 ], [0 ]), ([1 , 2 ], [0 , 1 ]), ([1 , 2 , 3 ], [0 , 1 , 2 ])], 3 ),
200
+ (Series ([1 , 2 , 3 ]), [([1 ], [0 ]), ([1 , 2 ], [0 , 1 ]), ([1 , 2 , 3 ], [0 , 1 , 2 ])], 2 ),
201
+ (Series ([1 , 2 , 3 ]), [([1 ], [0 ]), ([1 , 2 ], [0 , 1 ]), ([1 , 2 , 3 ], [0 , 1 , 2 ])], 1 ),
202
+ (Series ([1 , 2 ]), [([1 ], [0 ]), ([1 , 2 ], [0 , 1 ])], 2 ),
203
+ (Series ([np .nan , 2 ]), [([np .nan ], [0 ]), ([np .nan , 2 ], [0 , 1 ])], 2 ),
204
+ (Series ([], dtype = "int64" ), [], 2 ),
205
+ ],
206
+ )
207
+ def test_iter_expanding_series (ser , expected , min_periods ):
208
+ # GH 11704
209
+ expected = [Series (values , index = index ) for (values , index ) in expected ]
210
+
211
+ for (expected , actual ) in zip (expected , ser .expanding (min_periods )):
212
+ tm .assert_series_equal (actual , expected )
0 commit comments