【问题标题】:Best way to insert a new value插入新值的最佳方法
【发布时间】:2017-01-05 06:12:49
【问题描述】:

我想使用 pandas 数据框来跟踪我将在交易日实时下载的一些市场数据。

假设我想记录 AAPL 和 GOOG 的价格。我首先创建一个数据框:

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

假设第一个数据点在时间 t1 进入,AAPL 的价格为 555.0。然后几秒钟后的 t2,GOOG 的价格为 430.0。

当然做不到:

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

除了提取索引、修改它、重新索引数据框然后插入每个标量价格之外,pandas 中是否有一种简单/快速的方法来完成此操作?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    查看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 确实有这方面的功能)。

    【讨论】:

    • 谢谢!我想如果速度成为问题,那么正如你所说,创建一个嵌套字典,然后在某个时候转换为数据帧。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2013-02-15
    相关资源
    最近更新 更多