【问题标题】:Indexing a Pandas Dataframe using the index of a Series使用系列的索引索引 Pandas 数据框
【发布时间】:2018-09-03 15:58:26
【问题描述】:

我有一个 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”一个日期时间对象。

【问题讨论】:

标签: python pandas dataframe indexing


【解决方案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 所说,最终可能会有更好的方法来做你想做的事。

【讨论】:

    【解决方案2】:

    如果您只是想恢复索引位置,请执行以下操作:

    index = ts1.index[0]
    

    我会注意到,如果您将数据框向上移动(分别为 5/10),则索引不会对齐。但是,我假设您正在尝试构建一些滞后指标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-22
      • 2018-04-19
      • 1970-01-01
      • 2022-06-29
      • 1970-01-01
      • 2017-08-19
      • 2017-10-23
      相关资源
      最近更新 更多