【问题标题】:Convert time series into dataframe so that each row has consequtive time slices将时间序列转换为数据帧,使每一行都有连续的时间片
【发布时间】:2013-02-08 05:33:59
【问题描述】:

我有一个时间序列作为 pandas Series 对象。我想知道我是否可以通过查看过去 60 天的值来预测一天的值。出于这个原因,我想将我的时间序列转换为如下所示的数据框(以便我可以将其提供给学习算法);

Day 1    Day2     ... Day 60   value
986.55   990.95   ... 1618.86  1655.5
990.95   1017.85  ... 1655.5   1669.8
1017.85  1053.68  ... 1669.8   1707.2

我怎样才能进行这样的转换?

我的时间序列是这样的(索引是 pandas.tseries.index.DatetimeIndex);

DATE
1991-01-02 986.55
1991-01-03 990.95
1991-01-04 1017.85
1991-01-05 1053.68

【问题讨论】:

  • 你的时间序列是什么样的?
  • @AndyHayden 更新了我的问题。

标签: python numpy pandas


【解决方案1】:

s 是你得到的系列。您可以通过日复一日地切片系列来从中创建一个 DataFrame:

df = pd.DataFrame([s[i:i+60].values for i in range(len(s)-60)])

然后你重命名列:

df.columns=['Day '+str(i) for i in range(1,61)]

【讨论】:

    【解决方案2】:
    doffset = pd.tseries.offsets.Day(60)
    
    f = lambda x: pd.DataFrame(x.tolist()).T
    
    pd.concat([f(df['value'].ix[i:i+doffset]) for i in df.index])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-20
      • 2016-02-02
      • 1970-01-01
      • 2014-07-17
      • 2021-05-13
      • 2020-03-14
      • 1970-01-01
      相关资源
      最近更新 更多