# 读取日频行情数据
df = DataSource('bar1d_CN_STOCK_A').read(instruments='000002.SZA', start_date='2022-01-01',fields=['open','high',
'low','close','volume','amount'])
# 获取每个交易日所处的月份 所处的周,以便按周加工数据
df['month'] = df.date.apply(lambda x:x.month)
df['week'] = df.date.apply(lambda x:x.week)
# 按周降频聚合的函数
def resample(tmp):
tmp['week_high'] = tmp.high.rolling(5, min_periods=1).max()
tmp['week_low'] = tmp.low.rolling(5, min_periods=1).min()
tmp['week_open'] = tmp.open.rolling(5, min_periods=1).apply(lambda x:x.head(1))
tmp['week_close'] = tmp.close.rolling(5, min_periods=1).apply(lambda x:x.tail(1))
tmp['week_volume'] = tmp.volume.rolling(5, min_periods=1).sum()
tmp['week_amount'] = tmp.amount.rolling(5, min_periods=1).sum()
return tmp
# 按月、周进行降频
week_df = df.groupby(['month','week']).apply(resample)
week_df