Python 时间段数据类型打印为数字?

Python 时间段数据类型打印为数字?,python,pandas,Python,Pandas,我有一个Pandas数据框,其中包含我转换为Pandas TimeSeries的日期 从这里开始,我想在DF中添加一个与date列相同的列,只是周期格式,频率设置为months 问题是,在dataframe中,周期列打印为数字(2009-1打印为468,2009-2打印为469,等等) 当我在DF之外创建一个单独的PeriodIndex对象时,这不是问题 我做错了什么 用于将未格式化的时间列转换为日期时间的代码: subset['Created On'] = pd.to_datetime(sub

我有一个Pandas数据框,其中包含我转换为Pandas TimeSeries的日期

从这里开始,我想在DF中添加一个与date列相同的列,只是周期格式,频率设置为months

问题是,在dataframe中,周期列打印为数字(2009-1打印为468,2009-2打印为469,等等)

当我在DF之外创建一个单独的PeriodIndex对象时,这不是问题

我做错了什么

用于将未格式化的时间列转换为日期时间的代码:

subset['Created On'] = pd.to_datetime(subset['Created On'])
创建带句点的列的代码:

subset['Month'] = pd.PeriodIndex(subset['Created On'],freq='M')
创建单独PeriodIndex对象并以月份格式正确显示日期的代码:

months = pd.PeriodIndex(subset['Created On'],freq='M')
编辑:

根据注释中的要求,子集[:1]。to_dict()输出:

这会导致错误:

TypeError: Only valid with DatetimIndex or PeriodIndex

也许问题的一部分是我没有使用date列作为DF索引?如果是这样的话,那就不行了,因为它包含大量非唯一值,而且我已经在使用一个更能代表索引的唯一ID字段。

这是一个bug。作为临时解决办法,您可以执行以下操作:

subset['Month'] = pd.PeriodIndex(subset['Created On'],freq='M').asobject

我想你想对你的数据帧重新采样,但我不确定。请给出一些示例数据并说明您想要实现的目标。您能给我们提供
df[:1]的输出吗?to_dict()
?也许那样我们可以重现这个问题。啊,非常感谢韦斯。PS-你在纽约PyData的演讲我们很好--继续!这是可行的,但在处理大型数据集(>1MM行)时速度非常慢…有更快的替代方案吗?
TypeError: Only valid with DatetimIndex or PeriodIndex
subset['Month'] = pd.PeriodIndex(subset['Created On'],freq='M').asobject