将时间序列转换为数据框,使每行具有连续的时间片段
我有一个时间序列,存储在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
2 个回答
0
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,但其实很多时候,解决方案就在我们身边。我们只需要仔细查看文档,或者在网上搜索一下,就能找到答案。
比如说,当你在写代码时,可能会碰到一些错误信息。不要慌张,这些错误信息其实是程序在告诉你哪里出了问题。你可以把这些信息复制到搜索引擎里,通常会找到很多人遇到过类似的问题和解决办法。
另外,参与一些编程社区,比如StackOverflow,可以让你接触到更多的知识和经验。你可以看到其他人是如何解决问题的,也可以向他们请教,获取帮助。
总之,编程是一条不断学习的道路,遇到问题是很正常的。只要保持耐心,多动手尝试,就一定能找到解决方案。
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])
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)]