Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
test resample fix
  • Loading branch information
Matt Roeschke committed Sep 25, 2018
commit 21a4f240766e44004026abec54f361549a0f6e22
36 changes: 31 additions & 5 deletions pandas/core/resample.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import warnings
import copy
from textwrap import dedent
from pytz import UTC

import pandas as pd
from pandas.core.groupby.base import GroupByMixin
Expand All @@ -16,7 +17,7 @@
from pandas.tseries.frequencies import to_offset, is_subperiod, is_superperiod
from pandas.core.indexes.datetimes import DatetimeIndex, date_range
from pandas.core.indexes.timedeltas import TimedeltaIndex
from pandas.tseries.offsets import DateOffset, Tick, Day, delta_to_nanoseconds
from pandas.tseries.offsets import DateOffset, Tick, Day, delta_to_nanoseconds, CDay
from pandas.core.indexes.period import PeriodIndex
from pandas.errors import AbstractMethodError
import pandas.core.algorithms as algos
Expand All @@ -27,6 +28,7 @@

from pandas._libs import lib
from pandas._libs.tslibs import Timestamp, NaT
from pandas._libs.tslibs.conversion import tz_localize_to_utc
from pandas._libs.tslibs.period import IncompatibleFrequency

from pandas.util._decorators import Appender, Substitution
Expand Down Expand Up @@ -1394,10 +1396,33 @@ def _get_time_bins(self, ax):

def _adjust_bin_edges(self, binner, ax_values):
# Some hacks for > daily data, see #1471, #1458, #1483
#import pdb; pdb.set_trace()
#bin_edges = binner.asi8

bin_edges = binner.asi8
if not isinstance(self.freq, Day) and is_superperiod(self.freq, 'D'):
if self.closed == 'right':
bin_edges = (binner + CDay()).asi8
else:
bin_edges = binner.asi8

if self.freq != 'D' and is_superperiod(self.freq, 'D'):
bin_edges = bin_edges - 1
# intraday values on last day
if bin_edges[-2] > ax_values.max():
bin_edges = bin_edges[:-1]
binner = binner[:-1]
else:
bin_edges = binner.asi8

return binner, bin_edges
"""
def _adjust_bin_edges(self, binner, ax_values):
# Some hacks for > daily data, see #1471, #1458, #1483
if binner.tz is not None:
bin_edges = binner.tz_localize(None).asi8
else:
bin_edges = binner.asi8

if not isinstance(self.freq, Day) and is_superperiod(self.freq, 'D'):
day_nanos = delta_to_nanoseconds(timedelta(1))
if self.closed == 'right':
bin_edges = bin_edges + day_nanos - 1
Expand All @@ -1406,9 +1431,10 @@ def _adjust_bin_edges(self, binner, ax_values):
if bin_edges[-2] > ax_values.max():
bin_edges = bin_edges[:-1]
binner = binner[:-1]

if binner.tz is not None:
bin_edges = tz_localize_to_utc(bin_edges, binner.tz)
return binner, bin_edges

"""
def _get_time_delta_bins(self, ax):
if not isinstance(ax, TimedeltaIndex):
raise TypeError('axis must be a TimedeltaIndex, but got '
Expand Down