2016-11-14 24 views
1

我正在寻找将200个证券的历史数据拉到给定的指数。我从csv文件导入证券列表,然后迭代它们以从quandl api中提取它们各自的数据。每个证券的数据框有12列,所以我创建了一个新的列,其中包含证券的名称和调整后的关闭值,以便稍后可以确定系列。试图迭代并加入熊猫DF:AttributeError:'系列'对象没有属性'加入'

我在尝试将所有新列连接到空数据框时收到错误消息。我收到一个属性错误:

''' 
Print output data 
''' 
grab_constituent_data() 
AttributeError: 'Series' object has no attribute 'join' 

下面是我迄今为止所使用的代码。

''' 
Import the modules necessary for analysis 
''' 

import quandl 
import pandas as pd 
import numpy as np 

''' 
Set file pathes and API keys 
''' 

ticker_path = '' 
auth_key = '' 

''' 
Pull a list of tickers in the IGM ETF 
''' 

def ticker_list(): 
    df = pd.read_csv('{}IGM Tickers.csv'.format(ticker_path)) 
    # print(df['Ticker']) 
    return df['Ticker'] 

''' 
Pull the historical prices for the securities within Ticker List 
''' 

def grab_constituent_data(): 
    tickers = ticker_list() 
    main_df = pd.DataFrame() 

    for abbv in tickers: 
     query = 'EOD/{}'.format(str(abbv)) 
     df = quandl.get(query, authtoken=auth_key) 
     print('Competed the query for {}'.format(query)) 

     df['{} Adj_Close'.format(str(abbv))] = df['Adj_Close'].copy() 
     df = df['{} Adj_Close'.format(str(abbv))] 
     print('Completed the column adjustment for {}'.format(str(abbv))) 

     if main_df.empty: 
      main_df = df 
     else: 
      main_df = main_df.join(df) 

    print(main_df.head()) 

回答

2

看来,在你行

df = df['{} Adj_Close'.format(str(abbv))] 

你得到一个意甲,而不是一个数据帧。如果你想你的意甲转换成数据帧,你可以使用函数to_frame(),如:

df = df['{} Adj_Close'.format(str(abbv))].to_frame() 

我没有检查,如果你的代码可能会更简单,但是这应该解决您的问题。

相关问题