Skip to content

Commit

Permalink
Revert "BUG: first("1M") returning two months when first day is last …
Browse files Browse the repository at this point in the history
…day of month (pandas-dev#38331)" (pandas-dev#38448)

This reverts commit 6ecc787.
  • Loading branch information
simonjayhawkins authored Dec 13, 2020
1 parent 36c4d5c commit b7b87da
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 17 deletions.
1 change: 0 additions & 1 deletion doc/source/whatsnew/v1.2.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -607,7 +607,6 @@ Datetimelike
- Bug in :meth:`Series.isin` with ``datetime64[ns]`` dtype and :meth:`.DatetimeIndex.isin` failing to consider timezone-aware and timezone-naive datetimes as always different (:issue:`35728`)
- Bug in :meth:`Series.isin` with ``PeriodDtype`` dtype and :meth:`PeriodIndex.isin` failing to consider arguments with different ``PeriodDtype`` as always different (:issue:`37528`)
- Bug in :class:`Period` constructor now correctly handles nanoseconds in the ``value`` argument (:issue:`34621` and :issue:`17053`)
- Bug in :meth:`DataFrame.first` and :meth:`Series.first` returning two months for offset one month when first day is last calendar day (:issue:`29623`)

Timedelta
^^^^^^^^^
Expand Down
6 changes: 1 addition & 5 deletions pandas/core/generic.py
Original file line number Diff line number Diff line change
Expand Up @@ -8420,11 +8420,7 @@ def first(self: FrameOrSeries, offset) -> FrameOrSeries:
return self

offset = to_offset(offset)
if not isinstance(offset, Tick) and offset.is_on_offset(self.index[0]):
# GH#29623 if first value is end of period
end_date = end = self.index[0]
else:
end_date = end = self.index[0] + offset
end_date = end = self.index[0] + offset

# Tick-like, e.g. 3 weeks
if isinstance(offset, Tick):
Expand Down
12 changes: 1 addition & 11 deletions pandas/tests/frame/methods/test_first_and_last.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"""
import pytest

from pandas import DataFrame, bdate_range
from pandas import DataFrame
import pandas._testing as tm


Expand Down Expand Up @@ -69,13 +69,3 @@ def test_last_subset(self, frame_or_series):

result = ts[:0].last("3M")
tm.assert_equal(result, ts[:0])

@pytest.mark.parametrize("start, periods", [("2010-03-31", 1), ("2010-03-30", 2)])
def test_first_with_first_day_last_of_month(self, frame_or_series, start, periods):
# GH#29623
x = frame_or_series([1] * 100, index=bdate_range(start, periods=100))
result = x.first("1M")
expected = frame_or_series(
[1] * periods, index=bdate_range(start, periods=periods)
)
tm.assert_equal(result, expected)

0 comments on commit b7b87da

Please sign in to comment.