我想使用Pandas實時處理系列。每一秒鐘,我都需要將最新觀察添加到現有系列中。我的系列被分組到一個DataFrame中並存儲在一個HDF5文件中。高效添加單行到Pandas系列或DataFrame
這裏是我如何做到這一點的時刻:
>> existing_series = Series([7,13,97], [0,1,2])
>> updated_series = existing_series.append(Series([111], [3]))
這是最有效的方法是什麼?我讀過無數篇文章,但無法找到任何關注高頻數據效率的文章。
編輯:我剛剛閱讀了關於模塊擱置和醃製。看起來他們會實現我想要做的,基本上是在磁盤上保存列表。由於我的列表很大,有沒有辦法不將完整列表加載到內存中,而是有效地追加一個值?
這可能與任何有效的一樣,但熊貓/ numpy結構從根本上不適合有效地增長。當它們以固定尺寸創建並保持這種狀態時,它們的工作效果最佳。 – BrenBarn
'append'是'concat'的一個包裝器,所以'concat'會稍微更有效率,但是@BrenBarn說Pandas可能不適合每秒更新一次HDF5文件。如果您出於某種原因絕對需要熊貓,您是否可以收集系列清單並定期更新文件? –
Bren是正確的關於預分配時最佳工作的numpy/pandas。如果內存不是約束,只需預先分配一個巨大的零數組,並在程序結尾追加刪除多餘的零。我想這是Matti說的一點點。 – arynaq