Skip to content

Commit 1325c34

Browse files
committed
Adjust resample expecteds
1 parent 198ec6c commit 1325c34

File tree

3 files changed

+17
-29
lines changed

3 files changed

+17
-29
lines changed

pandas/core/resample.py

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2631,7 +2631,7 @@ def _get_timestamp_range_edges(
26312631
-------
26322632
A tuple of length 2, containing the adjusted pd.Timestamp objects.
26332633
"""
2634-
if isinstance(freq, (Tick, Day)):
2634+
if isinstance(freq, Tick):
26352635
index_tz = first.tz
26362636
if isinstance(origin, Timestamp) and (origin.tz is None) != (index_tz is None):
26372637
raise ValueError("The origin must have the same timezone as the index.")
@@ -2640,27 +2640,15 @@ def _get_timestamp_range_edges(
26402640
# resampling on the same kind of indexes on different timezones
26412641
origin = Timestamp("1970-01-01", tz=index_tz)
26422642

2643-
if isinstance(freq, Day):
2644-
# _adjust_dates_anchored assumes 'D' means 24h, but first/last
2645-
# might contain a DST transition (23h, 24h, or 25h).
2646-
# So "pretend" the dates are naive when adjusting the endpoints
2647-
first = first.tz_localize(None)
2648-
last = last.tz_localize(None)
2649-
if isinstance(origin, Timestamp):
2650-
origin = origin.tz_localize(None)
2651-
26522643
first, last = _adjust_dates_anchored(
26532644
first,
26542645
last,
2655-
cast("Day | Tick", freq),
2646+
freq,
26562647
closed=closed,
26572648
origin=origin,
26582649
offset=offset,
26592650
unit=unit,
26602651
)
2661-
if isinstance(freq, Day):
2662-
first = first.tz_localize(index_tz)
2663-
last = last.tz_localize(index_tz, nonexistent="shift_forward")
26642652
else:
26652653
first = first.normalize()
26662654
last = last.normalize()
@@ -2752,7 +2740,7 @@ def _insert_nat_bin(
27522740
def _adjust_dates_anchored(
27532741
first: Timestamp,
27542742
last: Timestamp,
2755-
freq: Tick | Day,
2743+
freq: Tick,
27562744
closed: Literal["right", "left"] = "right",
27572745
origin: TimeGrouperOrigin = "start_day",
27582746
offset: Timedelta | None = None,
@@ -2768,10 +2756,7 @@ def _adjust_dates_anchored(
27682756
if offset is not None:
27692757
offset = offset.as_unit(unit)
27702758

2771-
if isinstance(freq, Day):
2772-
freq_value = Timedelta(days=freq.n).as_unit(unit)._value
2773-
else:
2774-
freq_value = Timedelta(freq).as_unit(unit)._value
2759+
freq_value = Timedelta(freq).as_unit(unit)._value
27752760

27762761
origin_timestamp = 0 # origin == "epoch"
27772762
if origin == "start_day":

pandas/tests/resample/test_datetime_index.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -935,8 +935,9 @@ def _create_series(values, timestamps, freq="D"):
935935
rng = date_range(start, end, freq="1h").as_unit(unit)
936936
ts = Series(np.ones(len(rng)), index=rng)
937937

938-
expected_ts = ["2013-11-02 22:00-05:00", "2013-11-03 22:00-06:00"]
939-
expected = _create_series([23.0, 2.0], expected_ts)
938+
# GH#61985 changed this to behave like "B" rather than "24h"
939+
expected_ts = ["2013-11-03 00:00-05:00"]
940+
expected = _create_series([25.0], expected_ts)
940941
result = ts.resample("D", origin="start", offset="-2h").sum()
941942
tm.assert_series_equal(result, expected)
942943

@@ -945,18 +946,19 @@ def _create_series(values, timestamps, freq="D"):
945946
result = ts.resample("24h", origin="start", offset="-2h").sum()
946947
tm.assert_series_equal(result, expected)
947948

948-
expected_ts = ["2013-11-02 02:00-05:00", "2013-11-03 02:00-06:00"]
949-
expected = _create_series([3.0, 22.0], expected_ts)
949+
# GH#61985 changed this to behave like "B" rather than "24h"
950+
expected_ts = ["2013-11-03 00:00-05:00"]
951+
expected = _create_series([25.0], expected_ts)
950952
result = ts.resample("D", origin="start", offset="2h").sum()
951953
tm.assert_series_equal(result, expected)
952954

953-
expected_ts = ["2013-11-02 23:00-05:00", "2013-11-03 23:00-06:00"]
954-
expected = _create_series([24.0, 1.0], expected_ts)
955+
expected_ts = ["2013-11-03 00:00-05:00"]
956+
expected = _create_series([25.0], expected_ts)
955957
result = ts.resample("D", origin="start", offset="-1h").sum()
956958
tm.assert_series_equal(result, expected)
957959

958-
expected_ts = ["2013-11-02 01:00-05:00", "2013-11-03 01:00:00-0500"]
959-
expected = _create_series([1.0, 24.0], expected_ts)
960+
expected_ts = ["2013-11-03 00:00-05:00"]
961+
expected = _create_series([25.0], expected_ts)
960962
result = ts.resample("D", origin="start", offset="1h").sum()
961963
tm.assert_series_equal(result, expected)
962964

pandas/tests/resample/test_period_index.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,9 +560,10 @@ def test_resample_tz_localized2(self):
560560
)
561561
s = Series([1, 2], index=idx)
562562

563+
# GH#61985 changed this to behave like "B" rather than "24h"
563564
result = s.resample("D", closed="right", label="right").mean()
564-
ex_index = date_range("2001-09-21", periods=1, freq="D", tz="Australia/Sydney")
565-
expected = Series([1.5], index=ex_index)
565+
ex_index = date_range("2001-09-20", periods=2, freq="D", tz="Australia/Sydney")
566+
expected = Series([np.nan, 1.5], index=ex_index)
566567

567568
tm.assert_series_equal(result, expected)
568569

0 commit comments

Comments
 (0)