@@ -275,6 +275,38 @@ def test_getitem_generator(self):
275
275
assert_series_equal (result , expected )
276
276
assert_series_equal (result2 , expected )
277
277
278
+ def test_setitem_generator (self ):
279
+ bool_idx = self .series > 0
280
+ idces = self .series [bool_idx ].index
281
+
282
+ values = range (bool_idx .sum ())
283
+
284
+ expected = self .series .copy ()
285
+ expected [bool_idx ] = values
286
+
287
+ # list of labels:
288
+ s1 = self .series .copy ()
289
+ s1 [iter (idces )] = values
290
+ assert_series_equal (s1 , expected )
291
+
292
+ # list of labels with .loc:
293
+ s2 = self .series .copy ()
294
+ s2 .loc [iter (idces )] = values
295
+ assert_series_equal (s2 , expected )
296
+
297
+ import pytest
298
+ pytest .xfail ("Setitem with generators of booleans is not supported" )
299
+
300
+ # boolean generator (fails)
301
+ s3 = self .series .copy ()
302
+ s3 [iter (bool_idx )] = values
303
+ assert_series_equal (s3 , expected )
304
+
305
+ # boolean generator with .loc (fails)
306
+ s4 = self .series .copy ()
307
+ s4 .loc [iter (bool_idx )] = values
308
+ assert_series_equal (s4 , expected )
309
+
278
310
def test_type_promotion (self ):
279
311
# GH12599
280
312
s = pd .Series ()
0 commit comments