将时间序列转换为数据框,使每行具有连续的时间片段

1 投票
2 回答
608 浏览
提问于 2025-04-17 16:46

我有一个时间序列,存储在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)]

撰写回答