使用系列索引为熊猫数据框建立索引

时间:2018-09-03 15:58:26

标签: python pandas dataframe indexing

我有一个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”。

2 个答案:

答案 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),索引将不会变迁。但是,我认为您正在尝试建立一些滞后指标。