我有一个TimeSeries,我想提取前三个元素,并用它们创建一个包含三列的Pandas Dataframe行。例如,我可以使用Dictionary轻松地做到这一点。问题是我希望此行DataFrame的索引是Series的第一个元素的Datetime索引。在这里我失败了。
有关可重现的示例:
CRM
Date
2018-08-30 0.000442
2018-08-29 0.005923
2018-08-28 0.004782
2018-08-27 0.003243
pd.DataFrame({'Reg_Coef_5_1' : ts1.iloc[0][0], 'Reg_Coef_5_2' : ts1.shift(-5).iloc[0][0], \
'Reg_Coef_5_3' : ts1.shift(-10).iloc[0][0]}, index = ts1.iloc[0].index )
我得到:
Reg_Coef_5_1 Reg_Coef_5_2 Reg_Coef_5_3
CRM 0.000442 0.001041 -0.00035
相反,我希望索引为日期时间对象“ 2018-08-30”。
答案 0 :(得分:1)
如果我对您的理解正确,那么您希望索引成为日期对象,而不是示例中的“ CRM”。只需相应地设置索引:index = [ts1.index[0]]
而不是index = ts1.iloc[0].index
。
df = pd.DataFrame({'Reg_Coef_5_1' : ts1.iloc[0][0], 'Reg_Coef_5_2' : ts1.shift(-5).iloc[0][0], \
'Reg_Coef_5_3' : ts1.shift(-10).iloc[0][0]}, index = [ts1.index[0]] )
但是正如user10300706所说,最终可能会有更好的方法来做您想要的事情。
答案 1 :(得分:0)
如果您只是想恢复索引位置,请执行以下操作:
index = ts1.index[0]
我会注意到,如果您将数据帧逐步上移(分别为5/10),索引将不会变迁。但是,我认为您正在尝试建立一些滞后指标。