2012-04-12 81 views
4

我想使用熊貓數據框來跟蹤一些我將在交易日期間實時下載的市場數據。插入新值的最佳方式

假設我想記錄AAPL和GOOG的價格。我開始通過創建一個數據框:

prices = DataFrame(columns = ['AAPL', 'GOOG']) 

比方說第一個數據點在在時間t1進來,價格爲555.0 AAPL。然後在t2的幾秒鐘後,GOOG的價格爲430.0。

一個當然不能做:

prices['AAPL'][t1] = 555.0 
prices['GOOG'][t2] = 430.0 

是否有大熊貓容易/快速的方法來做到這一點,雖然除了拉動指數,修改它,重建索引數據幀,然後將每個標價格作爲它進來了嗎?

回答

3

檢出set_value方法(如果大小發生變異,則返回對新對象的引用)。但不要指望它要快(與嵌套的字典相比):

In [7]: prices 
Out[7]: 
Empty DataFrame 
Columns: array([AAPL, GOOG], dtype=object) 
Index: array([], dtype=object) 

In [8]: prices = prices.set_value(t1, 'AAPL', 5) 

In [9]: prices 
Out[9]: 
          AAPL GOOG 
2012-04-12 18:02:28.178331  5 NaN 

這將是很好,在某些時候通過在年底的數據膠更有效地調整一個數據幀添加一個方法(NumPy的確實有這個設施)。

+0

謝謝!我猜如果速度成爲問題,那麼就像你說的那樣創建一個嵌套字典,然後在某個時候轉換爲數據幀。 – geronimo 2012-04-13 14:57:34