我有一个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字段。
答案 0 :(得分:2)
这是一个错误。作为临时解决方法,您可以执行以下操作:
subset['Month'] = pd.PeriodIndex(subset['Created On'],freq='M').asobject