首页 > 解决方案 > 使用系列的索引索引 Pandas 数据框

问题描述

我有一个 TimeSeries,我想提取前三个元素,并用它们创建一行包含三列的 Pandas 数据框。例如,我可以使用 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' 一个日期时间对象。

标签: pythonpandasdataframeindexing

解决方案


如果我对您的理解正确,您希望索引是日期对象,而不是您的示例中的“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 所说,最终可能会有更好的方法来做你想做的事。


推荐阅读