我有基于分钟的OHLCV数据,开放范围/第一个小时(美国东部时间上午9:30-10:30)。我希望对这个数据进行重采样,这样我就可以得到一个60分钟的值,然后计算出范围。
当我对数据调用dataframe.resample()函数时,我得到两行,初始行从上午9:00开始我希望只有一排从上午9:30开始。
注:初始数据从9:30开始。
编辑:添加代码:
# Extract data for regular trading hours (rth) from the 24 hour data set
rth = data.between_time(start_time = '09:30:00', end_time = '16:15:00', include_end = False)
# Extract data for extended trading hours (eth) from the 24 hour data set
eth = data.between_time(start_time = '16:30:00', end_time = '09:30:00', include_end = False)
# Extract data for initial balance (rth) from the 24 hour data set
initial_balance = data.between_time(start_time = '09:30:00', end_time = '10:30:00', include_end = False)
被卡住了,试图将开盘范围按单个日期分开,并获得初始余额
conversion = {'Open' : 'first', 'High' : 'max', 'Low' : 'min', 'Close' : 'last', 'Volume' : 'sum'}
sample = data.between_time(start_time = '09:30:00', end_time = '10:30:00', include_end = False)
sample = sample.ix['2007-05-07']
sample.tail()
sample.resample('60Min', how = conversion)
默认情况下,重采样从整点开始。我希望它从数据开始的地方开始。
发布于 2013-02-14 03:10:13
您可以使用resample
的base
参数
sample.resample('60Min', how=conversion, base=30)
来自the above docs-link
base
:int
,默认值为0
对于均匀细分1天的频率,表示聚合间隔的“原点”。
例如,对于‘5分钟’频率,基数可以从0到4。默认值为0
发布于 2021-03-27 19:53:00
value是要聚合的列,按秒对dataframe日期重新采样,按均值聚合,然后删除nan行。
data=[('2014-02-24 16:16:47.204000', 1.391424)
,('2014-02-24 16:18:48.296000', 1.048143)
,('2014-02-24 16:19:52.346000', -0.823974)
,('2014-02-24 16:22:13.665000', -0.689560)
,('2014-02-24 16:24:13.760000', -0.323252)
,('2014-02-24 16:26:15.155000', -1.095331)
,('2014-02-24 16:29:58.235000', -0.185681)]
df=pd.DataFrame(data,columns=['Date','Value'])
df['Date']=pd.to_datetime(df['Date'])
minutes=df.resample('1Min',on='Date').mean().dropna()
print(minutes)
输出:
Value
Date
2014-02-24 16:16:00 1.391424
2014-02-24 16:18:00 1.048143
2014-02-24 16:19:00 -0.823974
2014-02-24 16:22:00 -0.689560
2014-02-24 16:24:00 -0.323252
2014-02-24 16:26:00 -1.095331
2014-02-24 16:29:00 -0.185681
https://stackoverflow.com/questions/14861023
复制相似问题