Skip to content

Commit 00c93d9

Browse files
committed
Fix pandas-dev#20744 . loffset ignored in upsample
1 parent 563a6ad commit 00c93d9

File tree

3 files changed

+23
-10
lines changed

3 files changed

+23
-10
lines changed

doc/source/whatsnew/v0.23.0.txt

+1
Original file line numberDiff line numberDiff line change
@@ -1200,6 +1200,7 @@ Groupby/Resample/Rolling
12001200
- Bug in :func:`DataFrameGroupBy.cumsum` and :func:`DataFrameGroupBy.cumprod` when ``skipna`` was passed (:issue:`19806`)
12011201
- Bug in :func:`DataFrame.resample` that dropped timezone information (:issue:`13238`)
12021202
- Bug in :func:`DataFrame.groupby` where transformations using ``np.all`` and ``np.any`` were raising a ``ValueError`` (:issue:`20653`)
1203+
- Bug in :func:`DatetimeIndexResampler._upsample` where ``loffset`` was being ignored (:issue:`20744`)
12031204

12041205
Sparse
12051206
^^^^^^

pandas/core/resample.py

+1
Original file line numberDiff line numberDiff line change
@@ -967,6 +967,7 @@ def _upsample(self, method, limit=None, fill_value=None):
967967
result = obj.reindex(res_index, method=method,
968968
limit=limit, fill_value=fill_value)
969969

970+
result = self._apply_loffset(result)
970971
return self._wrap_result(result)
971972

972973
def _wrap_result(self, result):

pandas/tests/test_resample.py

+21-10
Original file line numberDiff line numberDiff line change
@@ -1153,22 +1153,33 @@ def test_resample_loffset(self):
11531153
rng = date_range('1/1/2000 00:00:00', '1/1/2000 00:13:00', freq='min')
11541154
s = Series(np.random.randn(14), index=rng)
11551155

1156-
result = s.resample('5min', closed='right', label='right',
1157-
loffset=timedelta(minutes=1)).mean()
11581156
idx = date_range('1/1/2000', periods=4, freq='5min')
1159-
expected = Series([s[0], s[1:6].mean(), s[6:11].mean(), s[11:].mean()],
1160-
index=idx + timedelta(minutes=1))
1161-
assert_series_equal(result, expected)
1162-
1163-
expected = s.resample(
1157+
expected_downsample = Series([s[0], s[1:6].mean(),
1158+
s[6:11].mean(), s[11:].mean()],
1159+
index=idx + timedelta(minutes=1))
1160+
# GH 20744
1161+
expected_upsample = Series([s[0], s[5], s[10], s[-1]],
1162+
index=idx + timedelta(minutes=1))
1163+
1164+
# loffset should work for upsample and downsample
1165+
result_downsample = s.resample('5min', closed='right', label='right',
1166+
loffset=timedelta(minutes=1)).mean()
1167+
result_upsample = s.resample('5min', closed='right', label='right',
1168+
loffset=timedelta(minutes=1)).ffill()
1169+
1170+
assert_series_equal(result_downsample, expected_downsample)
1171+
assert_series_equal(result_upsample, expected_upsample)
1172+
1173+
# loffset should allow various types
1174+
result = s.resample(
11641175
'5min', closed='right', label='right',
11651176
loffset='1min').mean()
1166-
assert_series_equal(result, expected)
1177+
assert_series_equal(result, expected_downsample)
11671178

1168-
expected = s.resample(
1179+
result = s.resample(
11691180
'5min', closed='right', label='right',
11701181
loffset=Minute(1)).mean()
1171-
assert_series_equal(result, expected)
1182+
assert_series_equal(result, expected_downsample)
11721183

11731184
assert result.index.freq == Minute(5)
11741185

0 commit comments

Comments
 (0)