pandas 如何使用df.resample处理离散时间?

d7v8vwbk  于 2023-04-10  发布在  其他
关注(0)|答案(1)|浏览(144)

交易时间为9:00至10:15、10:30至11:15、11:15至11:30、13:30至15:00
交易软件中的30分钟K线时间如下:9:00至9:30、9:30至10:00、10:00至10:45、10:45至11:15、11:15至13:15、13:15至14:45、14:45至15:00
如果我从df.resample中得到的时间是连续的,我如何使它与交易软件中的显示相同?
输入:
df.resample('30T').agg({'open':'first','high':'max','low':'min','close':'last','volume':'sum'})
输出:

10:15到10:45因为休市15分钟,所以交易时间是30分钟
我用1分钟K线合成30分钟K线,所以我尝试

df2=df.reset_index()
r=df2.index//30
df2.groupby(r).agg({'date':'last','open':'first','high':'max','low':'min','close':'last','volume':'sum'})

但最后一个烛台必须是14:45到15:00

yshpjwxd

yshpjwxd1#

希望对大家有所帮助。

df=df.reset_index()
trading_hour=['09:30','10:00','10:45','11:15','13:45','14:15','14:45','15:00','21:30','22:00','22:30','23:00']
m30=df['date'].dt.strftime('%H:%M').isin(trading_hour).shift().fillna(False)
res=df.groupby(m30.cumsum()).agg({'date':'last','open':'first','high':'max','low':'min','close':'last','volume':'sum'})

相关问题