Skip to content

Commit 7f42645

Browse files
committed
TST: tests for setitem with generator indexer
1 parent bafec32 commit 7f42645

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

pandas/tests/series/test_indexing.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# pylint: disable-msg=E1101,W0612
33

44
from datetime import datetime, timedelta
5+
import pytest
56

67
from numpy import nan
78
import numpy as np
@@ -275,6 +276,44 @@ def test_getitem_generator(self):
275276
assert_series_equal(result, expected)
276277
assert_series_equal(result2, expected)
277278

279+
def test_setitem_generator(self):
280+
bool_idx = self.series > 0
281+
idces = self.series[bool_idx].index
282+
283+
values = range(bool_idx.sum())
284+
285+
expected = self.series.copy()
286+
expected[bool_idx] = values
287+
288+
# list of labels:
289+
s1 = self.series.copy()
290+
s1[iter(idces)] = values
291+
assert_series_equal(s1, expected)
292+
293+
# list of labels with .loc:
294+
s2 = self.series.copy()
295+
s2.loc[iter(idces)] = values
296+
assert_series_equal(s2, expected)
297+
298+
@pytest.mark.xfail(reason="Setitem with booleans generators unsupported")
299+
def test_setitem_boolean_generator(self):
300+
bool_idx = self.series > 0
301+
302+
values = range(bool_idx.sum())
303+
304+
expected = self.series.copy()
305+
expected[bool_idx] = values
306+
307+
# boolean generator (fails)
308+
s1 = self.series.copy()
309+
s1[iter(bool_idx)] = values
310+
assert_series_equal(s1, expected)
311+
312+
# boolean generator with .loc (fails)
313+
s2 = self.series.copy()
314+
s2.loc[iter(bool_idx)] = values
315+
assert_series_equal(s2, expected)
316+
278317
def test_type_promotion(self):
279318
# GH12599
280319
s = pd.Series()

0 commit comments

Comments
 (0)