Python 是否将PeriodIndex转换为DateTimeIndex?

Python 是否将PeriodIndex转换为DateTimeIndex?,python,pandas,dataframe,datetime-format,Python,Pandas,Dataframe,Datetime Format,关于将tseries.period.PeriodIndex转换为datetime,我有一个问题 我有一个数据框,看起来像这样: colors country time_month 2010-09 xxx xxx 2010-10 xxx xxx 2010-11 xxx xxx ... 返回 class 'pandas.tseries.period.PeriodIndex' cannot con

关于将tseries.period.PeriodIndex转换为datetime,我有一个问题

我有一个数据框,看起来像这样:

colors country time_month 2010-09 xxx xxx 2010-10 xxx xxx 2010-11 xxx xxx ... 返回

class 'pandas.tseries.period.PeriodIndex'
cannot convert Int64Index->DatetimeIndex
当我尝试使用df进行VAR分析()时

返回:

Given a pandas object and the index does not contain dates
所以显然,Period不被认为是datetime。现在,我的问题是如何将指数(time_month)转换为VAR分析可以使用的日期时间

df.index = pandas.DatetimeIndex(df.index)
返回

class 'pandas.tseries.period.PeriodIndex'
cannot convert Int64Index->DatetimeIndex

谢谢你的帮助

您可以使用PeriodIndex的
to_timestamp
方法:

In [25]: pidx = pd.period_range('2012-01-01', periods=10)

In [26]: pidx
Out[26]:
<class 'pandas.tseries.period.PeriodIndex'>
[2012-01-01, ..., 2012-01-10]
Length: 10, Freq: D

In [27]: pidx.to_timestamp()
Out[27]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-01, ..., 2012-01-10]
Length: 10, Freq: D, Timezone: None
[25]中的
:pidx=pd.周期范围('2012-01-01',周期=10)
在[26]中:pidx
出[26]:
[2012-01-01, ..., 2012-01-10]
长度:10,频率:D
在[27]中:pidx.to_timestamp()
出[27]:
[2012-01-01, ..., 2012-01-10]
长度:10,频率:D,时区:无

在Pandas的旧版本中,方法是
to_datetime

您也可以使用以下方法获得完全相同的结果

idx.astype('datetime64[ns]') 
要转换回期间,您可以执行以下操作:

 idx.to_period(freq='D')

这就解决了!由于某种原因,我以前肯定有语法错误。@Christopher顺便说一句,一般来说,如果答案解决了问题(这也适用于你的其他问题)不起作用,你应该尝试将你的问题标记为已解决。无法将PeriodArray强制转换为数据类型datetime64[ns]。如果句点数组不能转换成任何东西,为什么它会被发明?上面的代码片段确实有效,所以最好针对您的特定用例提出一个新问题。接下来的问题是:我想知道为什么
.dt.to_period('M')。to_timestamp()
不起作用。上面写着“TypeError:不支持的类型RangeIndex”。它必须是“D”才能工作吗?无法将PeriodArray强制转换为数据类型datetime64[ns]