Im正在尝试创建一个索引循环FIFO(先进先出)缓冲区,用于保存pandas数据帧中15个资产的烛台图的最后90分钟,这些数据帧按分钟聚合(即窗口大小=150),以便在客户端应用程序(烛光图)上实时显示。它将保持每(100万)个时间步长的每个资产的收盘、开盘、高、低和成交量特征。单个烛台将由websocket更新,其中最新的时间间隔将根据价格(烛台)的变化进行更新。在pandas中表示这种数据结构的最有效机制是什么,客户端应用程序需要输出形状[5,15,90],如as_frame中所示,分别代表[close,open,high,low,volume]15个资产和90个区间。在
因此,数据可以这样表示:
assets time close open high low volume
asset1 time1 0.001 0.002 0.003 0.001 0.001
time2 0.001 0.001 0.003 0.001 0.001
...
time90 ...
...
asset15 time1 0.001 0.002 0.003 0.001 0.001
time2 0.001 0.001 0.003 0.001 0.001
...
time90 ...
我用python pandas实现了一个简单的解决方案:
^{2}$如何在熊猫身上最有效地实施上述问题?如果在另一种数据结构下,不存在一种更为优化/性能更好的解决方案?在
添加数据应该像使用
append
和dict
一样简单,过滤目标DataFrame
中的列。在根据您的问题,我想您应该保留一个
DataFrame
,它在传入数据上保持一个连续150秒的窗口。在为了过滤生成的帧,我将从最近添加的时间窗口计算“开始”时间戳,并使用该时间戳筛选行,如下所示:
^{pr2}$根据数据帧的大小,您可能会获得更好的性能下降到位:
您可能可以在检查时间索引的长度后执行移位:
相关问题 更多 >
编程相关推荐