我正在使用 pandas 来存储股票价格的 OHLC 日期。这将是一个连续的提要,我会一直附加到数据框。
在程序中的另一个线程上,一旦读取并处理了数据,我编写了以下逻辑来删除超过 2 分钟的记录。
1 构建分时数据。
df_tick = pd.DataFrame.from_dict(ticks, orient='columns')
df_tick['last_trade_time'] = pd.to_datetime(df_tick['last_trade_time'])
df_build_tick = df_build_tick.append(df_tick[['instrument_token', 'last_trade_time', 'last_price','volume','oi','average_price']].copy())
以下步骤在同一程序的不同线程中运行
2 将列“last_trade_time”转换为日期时间对象
df_build_tick['last_trade_time'] = pd.to_datetime(df_build_tick['last_trade_time'])
3 删除超过2分钟的记录
df_build_tick.drop(df_build_tick[df_build_tick['last_trade_time'] < to_dt].index, inplace=True)
问题是记录没有被删除,df df_build_tick 越来越大,每次迭代,df 删除需要很长时间,也不要删除
程序执行的日志:
INFO:root:删除前内存中的记录总数为 11428
INFO:root:删除后内存中的记录总数为 11566
INFO:root:Before删除内存中的总记录是22794
INFO:root:删除后内存中的记录总数为 24658
INFO:root:删除前内存中的记录总数为 34392
INFO:root:删除后内存中的记录总数为 42982
不确定是什么问题。当来自 API 的数据量较少时工作完美,但在使用实际市场数据时失败。
请提出任何可用的替代方案(numpy 是更好的替代方案吗??)或者请指出错误。