From ec651d74df07f48437519a7ff28d926566f9f6d4 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Ittoku <38392245+kittoku@users.noreply.github.com> Date: Mon, 14 May 2018 09:25:12 +0900 Subject: [PATCH] BUG: Iteration over DatetimeIndex stops at chunksize (GH21012) --- pandas/core/indexes/datetimes.py | 3 ++- pandas/tests/indexes/datetimes/test_datetime.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index 9761974d77d4b..83950f1d71633 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -1365,7 +1365,8 @@ def __iter__(self): converted = libts.ints_to_pydatetime(data[start_i:end_i], tz=self.tz, freq=self.freq, box="timestamp") - return iter(converted) + for v in converted: + yield v def _wrap_union_result(self, other, result): name = self.name if self.name == other.name else None diff --git a/pandas/tests/indexes/datetimes/test_datetime.py b/pandas/tests/indexes/datetimes/test_datetime.py index 0722b9175c0c6..1a5f12103595c 100644 --- a/pandas/tests/indexes/datetimes/test_datetime.py +++ b/pandas/tests/indexes/datetimes/test_datetime.py @@ -153,6 +153,17 @@ def test_iteration_preserves_tz(self): assert result._repr_base == expected._repr_base assert result == expected + @pytest.mark.parametrize('periods', [0, 9999, 10000, 10001]) + def test_iteration_over_chunksize(self, periods): + # GH21012 + + index = date_range('2000-01-01 00:00:00', periods=periods, freq='min') + num = 0 + for stamp in index: + assert index[num] == stamp + num += 1 + assert num == len(index) + def test_misc_coverage(self): rng = date_range('1/1/2000', periods=5) result = rng.groupby(rng.day)