2012-04-12 40 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