Skip to content

Commit fc92170

Browse files
committed
BUG: resampling logic error with daily -> higher when closed='left', close #1726
1 parent c030198 commit fc92170

File tree

3 files changed

+17
-5
lines changed

3 files changed

+17
-5
lines changed

RELEASE.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ pandas 0.8.2
4747

4848
- Fix matplotlib auto-color assignment when no custom spectrum passed. Also
4949
respect passed color keyword argument (#1711)
50+
- Fix resampling logical error with closed='left' (#1726)
5051
- Fix critical DatetimeIndex.union bugs (#1730, #1719, #1745, #1702)
5152
- Fix critical DatetimeIndex.intersection bug with unanchored offsets (#1708)
5253
- Fix MM-YYYY time series indexing case (#1672)

pandas/tseries/resample.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,6 @@ def _adjust_bin_edges(self, binner, ax_values):
145145
day_nanos = _delta_to_nanoseconds(timedelta(1))
146146
if self.closed == 'right':
147147
bin_edges = bin_edges + day_nanos - 1
148-
else:
149-
bin_edges = bin_edges + day_nanos
150148

151149
# intraday values on last day
152150
if bin_edges[-2] > ax_values[-1]:

pandas/tseries/tests/test_resample.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -455,8 +455,8 @@ def test_resample_anchored_intraday(self):
455455
tm.assert_frame_equal(result, expected)
456456

457457
result = df.resample('M', closed='left')
458-
expected = df.resample('M', kind='period', closed='left').to_timestamp()
459-
tm.assert_frame_equal(result, expected)
458+
exp = df.tshift(1, freq='D').resample('M', kind='period').to_timestamp()
459+
tm.assert_frame_equal(result, exp)
460460

461461
rng = date_range('1/1/2012', '4/1/2013', freq='10min')
462462
df = DataFrame(rng.month, index=rng)
@@ -466,7 +466,9 @@ def test_resample_anchored_intraday(self):
466466
tm.assert_frame_equal(result, expected)
467467

468468
result = df.resample('Q', closed='left')
469-
expected = df.resample('Q', kind='period', closed='left').to_timestamp()
469+
expected = df.tshift(1, freq='D').resample('Q', kind='period',
470+
closed='left')
471+
expected = expected.to_timestamp()
470472
tm.assert_frame_equal(result, expected)
471473

472474
ts = _simple_ts('2012-04-29 23:00', '2012-04-30 5:00', freq='h')
@@ -799,6 +801,17 @@ def test_quarterly_resampling(self):
799801
exp = ts.to_timestamp().resample('A').to_period()
800802
assert_series_equal(result, exp)
801803

804+
def test_resample_weekly_bug_1726(self):
805+
# 8/6/12 is a Monday
806+
ind = DatetimeIndex(start="8/6/2012", end="8/26/2012", freq="D")
807+
n = len(ind)
808+
data = [[x] * 5 for x in range(n)]
809+
df = DataFrame(data, columns=['open', 'high', 'low', 'close', 'vol'],
810+
index=ind)
811+
812+
# it works!
813+
df.resample('W-MON', how='first', closed='left', label='left')
814+
802815
# def test_monthly_convention_span(self):
803816
# rng = period_range('2000-01', periods=3, freq='M')
804817
# ts = Series(np.arange(3), index=rng)

0 commit comments

Comments
 (0)