Skip to content

Commit 572cf8e

Browse files
committed
Merge branch 'use-base-in-resample' of https://github.com/captainsafia/pandas into captainsafia-use-base-in-resample
2 parents 7559522 + 3b466e8 commit 572cf8e

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

pandas/tests/test_tseries.py

-1
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,6 @@ def test_series_bin_grouper():
423423
exp_counts = np.array([3, 3, 4], dtype=np.int64)
424424
assert_almost_equal(counts, exp_counts)
425425

426-
427426
class TestBinGroupers(tm.TestCase):
428427
_multiprocess_can_split_ = True
429428

pandas/tseries/resample.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ def __init__(self, freq='Min', closed=None, label=None, how='mean',
6868
self.fill_method = fill_method
6969
self.limit = limit
7070
self.base = base
71-
7271
# always sort time groupers
7372
kwargs['sort'] = True
7473

@@ -229,13 +228,22 @@ def _get_time_delta_bins(self, ax):
229228
if not len(ax):
230229
binner = labels = TimedeltaIndex(data=[], freq=self.freq, name=ax.name)
231230
return binner, [], labels
232-
231+
233232
labels = binner = TimedeltaIndex(start=ax[0],
234233
end=ax[-1],
235234
freq=self.freq,
236235
name=ax.name)
237236

238237
end_stamps = labels + 1
238+
239+
# Addresses GH #10530
240+
if self.base > 0:
241+
last = labels[-1]
242+
labels_shifted = labels.copy()
243+
labels_shifted = labels_shifted.shift(self.base)
244+
labels_shifted = labels_shifted[labels_shifted <= last]
245+
labels = labels_shifted
246+
239247
bins = ax.searchsorted(end_stamps, side='left')
240248

241249
return binner, bins, labels
@@ -274,6 +282,7 @@ def _resample_timestamps(self, kind=None):
274282
binner = self.binner
275283
obj = self.obj
276284

285+
277286
# Determine if we're downsampling
278287
if axlabels.freq is not None or axlabels.inferred_freq is not None:
279288

pandas/tseries/tests/test_resample.py

+16
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
from pandas.core.groupby import DataError
1313
from pandas.tseries.index import date_range
14+
from pandas.tseries.tdi import timedelta_range
1415
from pandas.tseries.offsets import Minute, BDay
1516
from pandas.tseries.period import period_range, PeriodIndex, Period
1617
from pandas.tseries.resample import DatetimeIndex, TimeGrouper
@@ -625,8 +626,23 @@ def test_resample_base(self):
625626
resampled = ts.resample('5min', base=2)
626627
exp_rng = date_range('12/31/1999 23:57:00', '1/1/2000 01:57',
627628
freq='5min')
629+
628630
self.assertTrue(resampled.index.equals(exp_rng))
629631

632+
def test_resample_base_with_timedeltaindex(self):
633+
rng = timedelta_range(start = '0s', periods = 25, freq = 's')
634+
ts = Series(np.random.randn(len(rng)), index = rng)
635+
636+
with_base = ts.resample('2s', base = 5)
637+
without_base = ts.resample('2s')
638+
639+
exp_without_base = timedelta_range(start = '0s', end = '25s', freq = '2s')
640+
exp_with_base = timedelta_range(start = '10s', end = '25s', freq = '2s')
641+
642+
self.assertTrue(without_base.index.equals(exp_without_base))
643+
self.assertTrue(with_base.index.equals(exp_with_base))
644+
645+
630646
def test_resample_daily_anchored(self):
631647
rng = date_range('1/1/2000 0:00:00', periods=10000, freq='T')
632648
ts = Series(np.random.randn(len(rng)), index=rng)

0 commit comments

Comments
 (0)