我想使用pandas数据框来跟踪我将在交易日下载的一些市场数据。
假设我要记录AAPL和GOOG的价格。我首先创建一个数据帧:
prices = DataFrame(columns = ['AAPL', 'GOOG'])
假设第一个数据点在时间t1进入,AAPL的价格为555.0。然后在几秒钟之后的t2,售价为430.0。
其中一个当然不能做到:
prices['AAPL'][t1] = 555.0
prices['GOOG'][t2] = 430.0
除了拉动索引,修改它,重新索引数据帧然后插入每个标量价格时,pandas中是否有一种简单/快速的方法来实现这一目标?
答案 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
最好在某个时候添加一个方法,以便通过在末尾粘贴数据来更有效地调整DataFrame的大小(NumPy确实有这方面的工具)。