【问题标题】:Multiplie time-series into dataframe多个时间序列进入数据框
【发布时间】:2019-01-04 10:02:35
【问题描述】:

我需要根据多个股票价格时间序列创建一个数据框。时间序列的来源是quandl。我的循环创建了一个数据框,但没有正确添加时间序列。

import quandl
import datetime
tickers=['MMM','AOS','ABT']

for stock in range(len(tickers)):
    series = (quandl.get("WIKI/" + tickers[stock], start_date='2014-12-31', end_date='2018-12-31')['Adj. Close'])
    data = pd.DataFrame({'Date':series.index, tickers[stock]:series.values})
    portfolio = portfolio.append(data)

【问题讨论】:

  • 感谢您的所有建议。代码已更新为最小示例。当您运行它时,“投资组合”的结果没有 3 只股票的正确时间序列。

标签: python pandas dataframe time-series quandl


【解决方案1】:

好的,我想在这里提供帮助,我的猜测是您希望所有 3 个股票代码的数据位于同一数据框中的不同列中。你可以这样做:

import quandl

首先,您创建一个空的数据框组合,您可以将下载的数据合并到该组合中。此数据框获取包含所有可能日期的索引:

datetime_index = pd.DatetimeIndex(start='2014-12-31', end='2018-12-31', freq='D')
portfolio = pd.DataFrame(index=datetime_index)

然后您下载代码数据并将其与投资组合数据框合并,如下所示:

tickers=['MMM','AOS','ABT']
for ticker in tickers:
    ticker_data = (
        quandl.get('WIKI/' + ticker, 
                   start_date='2014-12-31', 
                   end_date='2018-12-31')['Adj. Close']
              .rename(ticker)
    )
    portfolio = pd.concat([portfolio, ticker_data], axis=1)

现在检查结果:

portfolio.head(3)
            MMM     AOS     ABT
2014-12-31  153.100 27.278  42.024
2015-01-01  nan     nan     nan
2015-01-02  152.857 27.084  41.912

如果这是您需要的,请告诉我,并在正确时投票/接受结果。将来:当您提出问题时,请始终添加您希望最终结果的示例。

【讨论】:

    猜你喜欢
    • 2022-11-27
    • 1970-01-01
    • 2014-05-12
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多