Skip to content

Commit 0213881

Browse files
committed
TST: tests for setitem with generator indexer
1 parent d2e767b commit 0213881

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

pandas/tests/series/test_indexing.py

+39
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pytest
55

66
from datetime import datetime, timedelta
7+
import pytest
78

89
from numpy import nan
910
import numpy as np
@@ -290,6 +291,44 @@ def test_getitem_generator(self):
290291
assert_series_equal(result, expected)
291292
assert_series_equal(result2, expected)
292293

294+
def test_setitem_generator(self):
295+
bool_idx = self.series > 0
296+
idces = self.series[bool_idx].index
297+
298+
values = range(bool_idx.sum())
299+
300+
expected = self.series.copy()
301+
expected[bool_idx] = values
302+
303+
# list of labels:
304+
s1 = self.series.copy()
305+
s1[iter(idces)] = values
306+
assert_series_equal(s1, expected)
307+
308+
# list of labels with .loc:
309+
s2 = self.series.copy()
310+
s2.loc[iter(idces)] = values
311+
assert_series_equal(s2, expected)
312+
313+
@pytest.mark.xfail(reason="Setitem with booleans generators unsupported")
314+
def test_setitem_boolean_generator(self):
315+
bool_idx = self.series > 0
316+
317+
values = range(bool_idx.sum())
318+
319+
expected = self.series.copy()
320+
expected[bool_idx] = values
321+
322+
# boolean generator (fails)
323+
s1 = self.series.copy()
324+
s1[iter(bool_idx)] = values
325+
assert_series_equal(s1, expected)
326+
327+
# boolean generator with .loc (fails)
328+
s2 = self.series.copy()
329+
s2.loc[iter(bool_idx)] = values
330+
assert_series_equal(s2, expected)
331+
293332
def test_type_promotion(self):
294333
# GH12599
295334
s = pd.Series()

0 commit comments

Comments
 (0)