请问如何把日频数据转换为月频率


(foreverhedge) #1

date = D.trading_days(market=‘CN’, start_date=‘2005-01-01’,
end_date=‘2017-12-31’)
是想把date转换为一个月频然后把因子数据筛选成月频,遇到的问题就是如果直接用datetime构建的话可能会刚好碰到休市日,之前也有把交易日直接按照30为一组选每组第一个,不过感觉这样很不合理,求各位大神指点,谢谢


(feynman0825) #2

start_date = '2015-01-01’
end_date = '2017-12-30’
instruments = D.instruments()
df = D.history_data(instruments,start_date,end_date, fields=[‘close’])
resample_freq = 'M’
df_M = pd.DataFrame(
{‘close’:df.set_index(‘date’)[[‘instrument’,‘close’]]
.groupby(‘instrument’)
.apply(lambda df: df[‘close’].resample(resample_freq,how=‘ohlc’)[‘close’])})

df_M = df_M.reset_index()
df_M.head()

上面是一段把日收盘转换为月收盘的一个例子。至于你说的因子数据转换为月频,这个取决于因子数据是时点数据的话,也可以用上面的逻辑来得到。