A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pandas-dev/pandas/commit/7fb453a880468989c727310f29438203be1d17dc below:

BUG: fix MS/BMS range generation

File tree Expand file treeCollapse file tree 4 files changed

+41

-20

lines changed

Filter options

Expand file treeCollapse file tree 4 files changed

+41

-20

lines changed Original file line number Diff line number Diff line change

@@ -341,8 +341,7 @@ def apply(self, other):

341 341 342 342

@classmethod

343 343

def onOffset(cls, dt):

344 -

firstDay, _ = lib.monthrange(dt.year, dt.month)

345 -

return dt.day == (firstDay + 1)

344 +

return dt.day == 1

346 345 347 346

@property

348 347

def rule_code(self):

@@ -397,6 +396,16 @@ def apply(self, other):

397 396

result = datetime(other.year, other.month, first)

398 397

return result

399 398 399 +

@classmethod

400 +

def onOffset(cls, dt):

401 +

first_weekday, _ = lib.monthrange(dt.year, dt.month)

402 +

if first_weekday == 5:

403 +

return dt.day == 3

404 +

elif first_weekday == 6:

405 +

return dt.day == 2

406 +

else:

407 +

return dt.day == 1

408 + 400 409

@property

401 410

def rule_code(self):

402 411

return 'BMS'

Original file line number Diff line number Diff line change

@@ -105,20 +105,7 @@ def _get_time_bins(self, axis):

105 105

trimmed = True

106 106 107 107

ax_values = axis.asi8

108 -

bin_edges = binner.asi8

109 - 110 -

# Some hacks for > daily data, see #1471, #1458

111 -

if self.freq != 'D' and is_superperiod(self.freq, 'D'):

112 -

day_nanos = _delta_to_nanoseconds(timedelta(1))

113 -

if self.closed == 'right':

114 -

bin_edges = bin_edges + day_nanos - 1

115 -

else:

116 -

bin_edges = bin_edges + day_nanos

117 - 118 -

# intraday values on last day

119 -

if bin_edges[-2] > ax_values[-1]:

120 -

bin_edges = bin_edges[:-1]

121 -

binner = binner[:-1]

108 +

binner, bin_edges = self._adjust_bin_edges(binner, ax_values)

122 109 123 110

# general version, knowing nothing about relative frequencies

124 111

bins = lib.generate_bins_dt64(ax_values, bin_edges, self.closed)

@@ -137,6 +124,25 @@ def _get_time_bins(self, axis):

137 124 138 125

return binner, bins, labels

139 126 127 +

def _adjust_bin_edges(self, binner, ax_values):

128 +

# Some hacks for > daily data, see #1471, #1458, #1483

129 + 130 +

bin_edges = binner.asi8

131 + 132 +

if self.freq != 'D' and is_superperiod(self.freq, 'D'):

133 +

day_nanos = _delta_to_nanoseconds(timedelta(1))

134 +

if self.closed == 'right':

135 +

bin_edges = bin_edges + day_nanos - 1

136 +

else:

137 +

bin_edges = bin_edges + day_nanos

138 + 139 +

# intraday values on last day

140 +

if bin_edges[-2] > ax_values[-1]:

141 +

bin_edges = bin_edges[:-1]

142 +

binner = binner[:-1]

143 + 144 +

return binner, bin_edges

145 + 140 146

def _get_time_period_bins(self, axis):

141 147

assert(isinstance(axis, DatetimeIndex))

142 148 Original file line number Diff line number Diff line change

@@ -422,6 +422,7 @@ def test_onOffset(self):

422 422 423 423

tests = [(BMonthBegin(), datetime(2007, 12, 31), False),

424 424

(BMonthBegin(), datetime(2008, 1, 1), True),

425 +

(BMonthBegin(), datetime(2001, 4, 2), True),

425 426

(BMonthBegin(), datetime(2008, 3, 3), True)]

426 427 427 428

for offset, date, expected in tests:

Original file line number Diff line number Diff line change

@@ -440,7 +440,7 @@ def test_monthly_resample_error(self):

440 440

def test_resample_anchored_intraday(self):

441 441

# #1471, #1458

442 442 443 -

rng = pd.date_range('1/1/2012', '4/1/2012', freq='10min')

443 +

rng = date_range('1/1/2012', '4/1/2012', freq='10min')

444 444

df = DataFrame(rng.month, index=rng)

445 445 446 446

result = df.resample('M')

@@ -451,7 +451,7 @@ def test_resample_anchored_intraday(self):

451 451

expected = df.resample('M', kind='period', closed='left').to_timestamp()

452 452

tm.assert_frame_equal(result, expected)

453 453 454 -

rng = pd.date_range('1/1/2012', '4/1/2013', freq='10min')

454 +

rng = date_range('1/1/2012', '4/1/2013', freq='10min')

455 455

df = DataFrame(rng.month, index=rng)

456 456 457 457

result = df.resample('Q')

@@ -462,9 +462,14 @@ def test_resample_anchored_intraday(self):

462 462

expected = df.resample('Q', kind='period', closed='left').to_timestamp()

463 463

tm.assert_frame_equal(result, expected)

464 464 465 +

def test_resample_anchored_monthstart(self):

466 +

ts = _simple_ts('1/1/2000', '12/31/2002')

467 + 468 +

freqs = ['MS', 'BMS', 'QS-MAR', 'AS-DEC', 'AS-JUN']

469 + 470 +

for freq in freqs:

471 +

result = ts.resample(freq, how='mean')

465 472 466 -

rng = pd.date_range('1/1/2012', '4/1/2015', freq='10min')

467 -

df = DataFrame(rng.month, index=rng)

468 473 469 474

def _simple_ts(start, end, freq='D'):

470 475

rng = date_range(start, end, freq=freq)

You can’t perform that action at this time.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4