【问题标题】:Adding stock price data frames to a list so you have a list of stock prices histories将股票价格数据框添加到列表中,以便您拥有股票价格历史列表
【发布时间】:2016-12-29 06:11:53
【问题描述】:

我正在尝试获取可追溯到 2014 年的所有这些股票代码的历史股价数据。所有这些公司都在 2014 年上市,因此它会从它们首次交易的那一天自动获取它们。

我希望stocklist 列表末尾包含每家公司的数据框/价格历史列表,但要分开而不是放在一起。

因此 stocklist 将是每家公司的数据框/股票历史,即['LC', 'ZAYO'] 等。

tickers = ['LC', 'ZAYO', 'GPRO', 'ANET', 'GRUB', 'CSLT', 'ONDK', 'QUOT', 'NEWR', 'ATEN']
stocklist = []

for i in tickers:
    stock = Share(i)
    adj = stock.get_historical('2014-1-1', '2016-12-27')
    df = pd.DataFrame(adj)
    df = df.set_index('Date')
    df['Adj_Close'] = df['Adj_Close'].astype(float, errors='coerce')
    price = df.sort()

i = price
stocklist.append(i)

【问题讨论】:

  • 修正你的缩进,你的代码就可以工作了。

标签: python pandas


【解决方案1】:

由于缩进错误,您没有在循环内附加到 stocklist

另外,你在不必要地弄乱了循环变量i

这可能有效,尽管由于 Share 类不可用而难以测试:

tickers = ['LC', 'ZAYO', 'GPRO', 'ANET', 'GRUB',
           'CSLT', 'ONDK', 'QUOT', 'NEWR', 'ATEN']
stocklist = []

for ticker in tickers:
    stock = Share(ticker)
    adj = stock.get_historical('2014-1-1', '2016-12-27')
    df = pd.DataFrame(adj)
    df.set_index('Date', inplace=True)
    df['Adj_Close'] = df['Adj_Close'].astype(float, errors='coerce')
    df.sort_index(inplace=True)
    stocklist.append(df)

我所做的更改:

  • 使用tickers 作为变量名而不是list,后者是内置类型的名称
  • 设置索引并对数据框进行就地排序,而不是复制
  • 使用DataFrame.sort_index() 进行排序,因为DataFrame.sort() 已弃用
  • 固定缩进,因此stocklist 填充在循环内
  • stocklist 附加之前删除了不必要的分配

将数据帧收集到由股票代码键入的字典中也可能更有用。因此,您将初始化 stocklist = {} 而不是追加 do stocklist[ticker] = df

【讨论】:

  • 太好了,非常感谢。实际上 stocklist[ticker] = df 更符合我想做的事情。我真正想做的是将所有的 Adj Close 放在一个数据框中。这样我就可以 1. 将所有价格绘制在一个 graf 和 2. 看看自 IPO 以来每个价格的变化情况。我仍然无法弄清楚,所以任何指针都会有所帮助!
猜你喜欢
  • 1970-01-01
  • 2011-03-23
  • 2018-04-18
  • 1970-01-01
  • 2023-01-13
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多