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

时间:2012-11-17 15:59:39

标签: python pandas

我有一个Pandas Dataframe,其中包含我转换为pandas TimeSeries的日期。

从那里开始,我想在DF中添加一个与日期列相同的列,只是在Period格式中,频率设置为几个月。

问题是,在数据框中,期间列打印为数字(2009-1打印为468,2009-2打印为469等)。

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

我做错了什么?

我用来将未格式化的时间列转换为DateTime的代码:

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()输出:

#[Out]# {'Created On': {12822544: <Timestamp: 2009-01-01 00:00:00>}, 'City': {12822544: 'BROOKLYN'}, 'Borough': {12822544: 'Unspecified'}, 'Location': {12822544: '(40.65662129596871, -73.95806621423951)'}, 'Closed Date': {12822544: '01/07/2009 12:00 AM'}}

请注意,由于我的OP,我丢失了会话并且不得不将数据重新上传到DF。此时,我只使用pd.to_datetime方法将“Created On”列转换为时间戳。从那时起,我尝试使用:

subset['Created On'].resample('M')

导致错误:

TypeError: Only valid with DatetimIndex or PeriodIndex

问题的一部分可能是我没有使用日期列作为DF索引?如果是这样,那将无法正常工作,因为它包含大量非唯一值,并且我已经使用了更具代表性的唯一ID字段。

1 个答案:

答案 0 :(得分:2)

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

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

http://github.com/pydata/pandas/issues/2281