Python 将数据帧划分为重叠段
我有一个带有时间索引的数据帧,需要将其划分为重叠的段(例如,长度为5天,偏移量为1天) 以下是一个示例数据帧:Python 将数据帧划分为重叠段,python,python-3.x,pandas,pandas-groupby,datetimeindex,Python,Python 3.x,Pandas,Pandas Groupby,Datetimeindex,我有一个带有时间索引的数据帧,需要将其划分为重叠的段(例如,长度为5天,偏移量为1天) 以下是一个示例数据帧: import pandas as pd i=pd.date_range('05-01-2015', '21-05-2018', freq='D') x=pd.DataFrame(index=i, data = np.random.randint(0, 100, len(i))) 划分后,各细分市场的指数应分别从2015-05-01到2015-05-05,从2015-05-02
import pandas as pd
i=pd.date_range('05-01-2015', '21-05-2018', freq='D')
x=pd.DataFrame(index=i, data = np.random.randint(0, 100, len(i)))
划分后,各细分市场的指数应分别从2015-05-01
到2015-05-05
,从2015-05-02
到2015-05-06
,从2015-05-03
到2015-05-08
等。我认为groupby
应该有一些技巧来做到这一点,但无法提出有效的实施方案
作为参考,这在以下方面实施:
分区[list,n,d]
-生成偏移量为d的子列表
我非常感谢你们提供的任何见解。正如@alkasm所指出的,您可以使用pandas中的
滚动使用示例数据框对5天分区执行聚合计算:
import pandas as pd
i = pd.date_range('05-01-2015', '21-05-2018', freq='D')
x = pd.DataFrame(index=i, data = np.random.randint(0, 100, len(i)))
x.rolling(5).sum()
这样做的诀窍是,它向后计算聚合函数,因此您可能需要扩展索引以包括四天前的索引。数据帧中索引为2018-05-06
的一行以及5行rolling()
调用将代表2018-05-02
到2018-05-06
的段(包括5天)。我对您使用的日期格式有点困惑,是DD-MM-YYYY
还是MM-DD-YYYY
?我想你想要df.rolling(5)
?在5行滚动窗口中:。如果您的时间序列不一致,在固定的时间段内,它还具有“偏移”功能。