重置Pandas'系列轧制“每天一次

2024-10-01 09:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Pandas分析了1分钟的OHLC市场数据,并使用以下内容在我的数据框中添加了一个包含20个周期(20分钟)移动平均值的列,名为“data”:

data['maFast'] = Series.rolling(data['Last'],center=False,window=20).mean() 

我的数据有一个daystart='9:30'和dayend='16:14:59',我希望在daystart的每一天重置移动平均值。我检查了系列轧制文档但看不到重置选项,我该怎么做?在

这将显示第一天和maFast列,显示20个时段后的数据,如预期:

^{pr2}$

第二天有09:30的maFast数据,但我需要每天重置。在

                    Open    High    Low Last    Volume  maFast  
Timestamp                           
2014-03-05 09:30:00 1793.25 1794.00 1793.25 1793.25 3   1792.5125   
2014-03-05 09:31:00 1793.50 1793.50 1791.75 1792.25 25  1792.4625   
2014-03-05 09:32:00 1791.50 1791.75 1791.25 1791.75 55  1792.3625

Tags: 数据falsepandasdata市场window重置平均值
1条回答
网友
1楼 · 发布于 2024-10-01 09:40:02

下面是一个显示周期为1小时的示例,但它展示了主要思想:按天分组,并在分组的数据帧上应用滚动函数。在

In [62]: df = pd.DataFrame(index=pd.date_range(start='2014-03-04 09:00:00', end='2014-03-04 16:15:00', freq='1h') + pd.date_range(start='2014-03-05 09:00:00', end='2014-03-05 16:15:00', freq='1h'), data={'x': 1})
manage.py:1: FutureWarning: using '+' to provide set union with datetimelike Indexes is deprecated, use .union()
  #!/usr/bin/env python


In [63]: df
Out[63]: 
                     x
2014-03-04 09:00:00  1
2014-03-04 10:00:00  1
2014-03-04 11:00:00  1
2014-03-04 12:00:00  1
2014-03-04 13:00:00  1
2014-03-04 14:00:00  1
2014-03-04 15:00:00  1
2014-03-04 16:00:00  1
2014-03-05 09:00:00  1
2014-03-05 10:00:00  1
2014-03-05 11:00:00  1
2014-03-05 12:00:00  1
2014-03-05 13:00:00  1
2014-03-05 14:00:00  1
2014-03-05 15:00:00  1
2014-03-05 16:00:00  1

In [64]: df.groupby(pd.TimeGrouper('d')).apply(pd.rolling_sum, 3)
Out[64]: 
                      x
2014-03-04 09:00:00 NaN
2014-03-04 10:00:00 NaN
2014-03-04 11:00:00   3
2014-03-04 12:00:00   3
2014-03-04 13:00:00   3
2014-03-04 14:00:00   3
2014-03-04 15:00:00   3
2014-03-04 16:00:00   3
2014-03-05 09:00:00 NaN
2014-03-05 10:00:00 NaN
2014-03-05 11:00:00   3
2014-03-05 12:00:00   3
2014-03-05 13:00:00   3
2014-03-05 14:00:00   3
2014-03-05 15:00:00   3
2014-03-05 16:00:00   3

相关问题 更多 >