From 8f91dd0a8ed6671956e213950d390d7c5576a299 Mon Sep 17 00:00:00 2001 From: gabicca Date: Tue, 4 Aug 2020 15:35:17 +0100 Subject: [PATCH 1/4] BUG: series.truncate fix for one-element series (#35544) --- pandas/core/generic.py | 2 +- pandas/tests/series/methods/test_truncate.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index e46fde1f59f16..a11ee6b5d9846 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -9397,7 +9397,7 @@ def truncate( if before > after: raise ValueError(f"Truncate: {after} must be after {before}") - if ax.is_monotonic_decreasing: + if len(ax) > 1 and ax.is_monotonic_decreasing: before, after = after, before slicer = [slice(None, None)] * self._AXIS_LEN diff --git a/pandas/tests/series/methods/test_truncate.py b/pandas/tests/series/methods/test_truncate.py index 7c82edbaec177..b1988dbd9d023 100644 --- a/pandas/tests/series/methods/test_truncate.py +++ b/pandas/tests/series/methods/test_truncate.py @@ -141,3 +141,11 @@ def test_truncate_multiindex(self): expected = df.col tm.assert_series_equal(result, expected) + + def test_truncate_one_element_series(self): + # GH 35544 + series = pd.Series([0.1], index=pd.DatetimeIndex(['2020-08-04'])) + before = pd.Timestamp('2020-08-02') + after = pd.Timestamp('2020-08-04') + + assert series.truncate(before=before, after=after).equals(series) \ No newline at end of file From a72a62b86ca46494642fa477260e77be9ba08987 Mon Sep 17 00:00:00 2001 From: gabicca Date: Tue, 4 Aug 2020 15:40:57 +0100 Subject: [PATCH 2/4] BUG: series.truncate fix for one-element series (#35544) - black formatting --- pandas/tests/series/methods/test_truncate.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pandas/tests/series/methods/test_truncate.py b/pandas/tests/series/methods/test_truncate.py index b1988dbd9d023..8aa9e45aea831 100644 --- a/pandas/tests/series/methods/test_truncate.py +++ b/pandas/tests/series/methods/test_truncate.py @@ -144,8 +144,8 @@ def test_truncate_multiindex(self): def test_truncate_one_element_series(self): # GH 35544 - series = pd.Series([0.1], index=pd.DatetimeIndex(['2020-08-04'])) - before = pd.Timestamp('2020-08-02') - after = pd.Timestamp('2020-08-04') + series = pd.Series([0.1], index=pd.DatetimeIndex(["2020-08-04"])) + before = pd.Timestamp("2020-08-02") + after = pd.Timestamp("2020-08-04") - assert series.truncate(before=before, after=after).equals(series) \ No newline at end of file + assert series.truncate(before=before, after=after).equals(series) From f6672121d317dff5a8522f245b62a78cd04cafe6 Mon Sep 17 00:00:00 2001 From: gabicca Date: Tue, 4 Aug 2020 16:05:01 +0100 Subject: [PATCH 3/4] BUG: series.truncate fix for one-element series (#35544) - updated release notes --- doc/source/whatsnew/v1.1.1.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/whatsnew/v1.1.1.rst b/doc/source/whatsnew/v1.1.1.rst index 6a327a4fc732f..4cfbd05e6ef0f 100644 --- a/doc/source/whatsnew/v1.1.1.rst +++ b/doc/source/whatsnew/v1.1.1.rst @@ -49,7 +49,7 @@ Categorical **Indexing** -- +- Bug in series.truncate when trying to truncate a single-element series (:issue:`35544`) .. --------------------------------------------------------------------------- From 2e85aef7caa2db9647109b9e7c1744fda3ad5232 Mon Sep 17 00:00:00 2001 From: gabicca Date: Wed, 5 Aug 2020 08:16:12 +0100 Subject: [PATCH 4/4] BUG: series.truncate fix for one-element series (#35544) - PR review updates --- doc/source/whatsnew/v1.1.1.rst | 2 +- pandas/tests/series/methods/test_truncate.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/source/whatsnew/v1.1.1.rst b/doc/source/whatsnew/v1.1.1.rst index 4cfbd05e6ef0f..60cdcfe8d13df 100644 --- a/doc/source/whatsnew/v1.1.1.rst +++ b/doc/source/whatsnew/v1.1.1.rst @@ -49,7 +49,7 @@ Categorical **Indexing** -- Bug in series.truncate when trying to truncate a single-element series (:issue:`35544`) +- Bug in :meth:`Series.truncate` when trying to truncate a single-element series (:issue:`35544`) .. --------------------------------------------------------------------------- diff --git a/pandas/tests/series/methods/test_truncate.py b/pandas/tests/series/methods/test_truncate.py index 8aa9e45aea831..45592f8d99b93 100644 --- a/pandas/tests/series/methods/test_truncate.py +++ b/pandas/tests/series/methods/test_truncate.py @@ -148,4 +148,7 @@ def test_truncate_one_element_series(self): before = pd.Timestamp("2020-08-02") after = pd.Timestamp("2020-08-04") - assert series.truncate(before=before, after=after).equals(series) + result = series.truncate(before=before, after=after) + + # the input Series and the expected Series are the same + tm.assert_series_equal(result, series)