gpt4 book ai didi

python - Pandas OHLC 对 OHLC 数据的聚合

转载 作者:IT老高 更新时间:2023-10-28 20:21:09 50 4
gpt4 key购买 nike

我了解,使用一列数据对 Pandas 中的时间序列数据进行 OHLC 重新采样将完美运行,例如在以下数据帧上:

>>df
ctime openbid
1443654000 1.11700
1443654060 1.11700
...

df['ctime'] = pd.to_datetime(df['ctime'], unit='s')
df = df.set_index('ctime')
df.resample('1H', how='ohlc', axis=0, fill_method='bfill')


>>>
open high low close
ctime
2015-09-30 23:00:00 1.11700 1.11700 1.11687 1.11697
2015-09-30 24:00:00 1.11700 1.11712 1.11697 1.11697
...

但是如果数据已经是 OHLC 格式,我该怎么办?据我所知,API 的 OHLC 方法会为每一列计算一个 OHLC 切片,因此如果我的数据采用以下格式:

             ctime  openbid  highbid   lowbid  closebid
0 1443654000 1.11700 1.11700 1.11687 1.11697
1 1443654060 1.11700 1.11712 1.11697 1.11697
2 1443654120 1.11701 1.11708 1.11699 1.11708

当我尝试重新采样时,我会为每一列得到一个 OHLC,如下所示:

                     openbid                             highbid           \
open high low close open high
ctime
2015-09-30 23:00:00 1.11700 1.11700 1.11700 1.11700 1.11700 1.11712
2015-09-30 23:01:00 1.11701 1.11701 1.11701 1.11701 1.11708 1.11708
...
lowbid \
low close open high low close
ctime
2015-09-30 23:00:00 1.11700 1.11712 1.11687 1.11697 1.11687 1.11697
2015-09-30 23:01:00 1.11708 1.11708 1.11699 1.11699 1.11699 1.11699
...

closebid
open high low close
ctime
2015-09-30 23:00:00 1.11697 1.11697 1.11697 1.11697
2015-09-30 23:01:00 1.11708 1.11708 1.11708 1.11708

有没有人愿意分享的快速(ish)解决方法,而无需我深入了解 Pandas 手册?

谢谢。

ps,有这个答案 - Converting OHLC stock data into a different timeframe with python and pandas - 但那是 4 年前的事了,所以我希望有一些进展。

最佳答案

这与您链接的答案类似,但更简洁、更快,因为它使用优化的聚合,而不是 lambda。

请注意,resample(...).agg(...) 语法需要 pandas 版本 0.18.0

In [101]: df.resample('1H').agg({'openbid': 'first', 
'highbid': 'max',
'lowbid': 'min',
'closebid': 'last'})
Out[101]:
lowbid highbid closebid openbid
ctime
2015-09-30 23:00:00 1.11687 1.11712 1.11708 1.117

关于python - Pandas OHLC 对 OHLC 数据的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36222928/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com