Skip to content

Commit 4fbf5e5

Browse files
sribjreback
authored andcommitted
BUG: Fix for Period.end_time when multiple of a frequency is requested, #11738
1. Added a new test with the multiple of a frequency. 2. Rearranged some tests to improve readability of the code. 3. Added bug fix to whatsnew 4. Added a comment in the test
1 parent 0749d6f commit 4fbf5e5

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

doc/source/whatsnew/v0.18.0.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ Bug Fixes
153153
~~~~~~~~~
154154

155155
- Bug in ``GroupBy.size`` when data-frame is empty. (:issue:`11699`)
156-
156+
- Bug in ``Period.end_time`` when a multiple of time period is requested (:issue:`11738`)
157157

158158

159159

pandas/src/period.pyx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,8 @@ cdef class Period(object):
889889
ordinal = self.ordinal
890890
else:
891891
# freq.n can't be negative or 0
892-
ordinal = (self + self.freq.n).start_time.value - 1
892+
# ordinal = (self + self.freq.n).start_time.value - 1
893+
ordinal = (self + 1).start_time.value - 1
893894
return Timestamp(ordinal)
894895

895896
def to_timestamp(self, freq=None, how='start', tz=None):

pandas/tseries/tests/test_period.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -566,19 +566,26 @@ def _ex(*args):
566566
xp = _ex(2012, 2, 1)
567567
self.assertEqual(xp, p.end_time)
568568

569-
xp = _ex(2012, 1, 2)
570569
p = Period('2012', freq='D')
571-
self.assertEqual(p.end_time, xp)
570+
xp = _ex(2012, 1, 2)
571+
self.assertEqual(xp, p.end_time)
572572

573-
xp = _ex(2012, 1, 1, 1)
574573
p = Period('2012', freq='H')
575-
self.assertEqual(p.end_time, xp)
574+
xp = _ex(2012, 1, 1, 1)
575+
self.assertEqual(xp, p.end_time)
576576

577+
p = Period('2012', freq='B')
577578
xp = _ex(2012, 1, 3)
578-
self.assertEqual(Period('2012', freq='B').end_time, xp)
579+
self.assertEqual(xp, p.end_time)
579580

581+
p = Period('2012', freq='W')
580582
xp = _ex(2012, 1, 2)
581-
self.assertEqual(Period('2012', freq='W').end_time, xp)
583+
self.assertEqual(xp, p.end_time)
584+
585+
# Test for GH 11738
586+
p = Period('2012', freq='15D')
587+
xp = _ex(2012, 1, 16)
588+
self.assertEqual(xp, p.end_time)
582589

583590
p = Period('NaT', freq='W')
584591
self.assertTrue(p.end_time is tslib.NaT)

0 commit comments

Comments
 (0)