ENH: Period to accept datetime64 value? · Issue #9054 · pandas-dev/pandas (original) (raw)

I didn't directly find something about this, but is there a reason why the Period(Index) constructor does not take datetime64 values? As it does accept datetime:

In [15]: t = pd.Timestamp('2012-01-01')

In [16]: t.to_pydatetime()
Out[16]: datetime.datetime(2012, 1, 1, 0, 0)

In [17]: t.asm8
Out[17]: numpy.datetime64('2012-01-01T01:00:00.000000000+0100')

In [19]: pd.Period(t, freq='D')
Out[19]: Period('2012-01-01', 'D')

In [20]: pd.Period(t.to_pydatetime(), freq='D')
Out[20]: Period('2012-01-01', 'D')

In [21]: pd.Period(t.asm8, freq='D')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-21-f08079765cf6> in <module>()
----> 1 pd.Period(t.asm8, freq='D')

C:\Anaconda\lib\site-packages\pandas\tseries\period.pyc in __init__(self, value,
 freq, ordinal, year, month, quarter, day, hour, minute, second)
    141         else:
    142             msg = "Value must be Period, string, integer, or datetime"
--> 143             raise ValueError(msg)
    144
    145         base, mult = _gfc(freq)

ValueError: Value must be Period, string, integer, or datetime