Skip to content

Commit ce89702

Browse files
committed
Period accepts datetime64 value
Added support for `datetime64` value for Period. Fixes pandas-dev#9054.
1 parent 3e7f21c commit ce89702

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

doc/source/whatsnew/v0.16.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Enhancements
4949

5050
- Allow conversion of values with dtype ``datetime64`` or ``timedelta64`` to strings using ``astype(str)`` (:issue:`9757`)
5151
- ``get_dummies`` function now accepts ``sparse`` keyword. If set to ``True``, the return ``DataFrame`` is sparse, e.g. ``SparseDataFrame``. (:issue:`8823`)
52+
- ``Period`` now accepts ``datetime64`` as value input. (:issue:`9054`)
5253

5354
.. _whatsnew_0161.api:
5455

pandas/src/period.pyx

+4
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,10 @@ cdef class Period(object):
710710
dt = value
711711
if freq is None:
712712
raise ValueError('Must supply freq for datetime value')
713+
elif isinstance(value, np.datetime64):
714+
dt = Timestamp(value)
715+
if freq is None:
716+
raise ValueError('Must supply freq for datetime value')
713717
elif isinstance(value, date):
714718
dt = datetime(year=value.year, month=value.month, day=value.day)
715719
if freq is None:

pandas/tseries/tests/test_period.py

+6
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,13 @@ def test_period_constructor(self):
226226

227227
i1 = Period(date(2007, 1, 1), freq='M')
228228
i2 = Period(datetime(2007, 1, 1), freq='M')
229+
i3 = Period(np.datetime64('2007-01-01'), freq='M')
230+
i4 = Period(np.datetime64('2007-01-01 00:00:00Z'), freq='M')
231+
i5 = Period(np.datetime64('2007-01-01 00:00:00.000Z'), freq='M')
229232
self.assertEqual(i1, i2)
233+
self.assertEqual(i1, i3)
234+
self.assertEqual(i1, i4)
235+
self.assertEqual(i1, i5)
230236

231237
i1 = Period('2007-01-01 09:00:00.001')
232238
expected = Period(datetime(2007, 1, 1, 9, 0, 0, 1000), freq='L')

0 commit comments

Comments
 (0)